cells

  • Initiateur de la discussion nanard
  • Date de début
N

nanard

Guest
bonsoir à tous.
jde suis devant un nouveau pb:
quel difference entre ce qui suit qui fonctionne
For i = 1 To Number
title = Sheets(i).Name
If Exclusion(title) = False Then
N = N + 1
Select Case N
Case 1
title = Worksheets('Données').Range('O2').Value2
Worksheets('Tableau').Range('B8:AD100').Copy _
Destination:=Worksheets(i).Range('A1')

et qui ne fonctionne pas merci d'avance
For i = 1 To Number
title = Sheets(i).Name
If Exclusion(title) = False Then
N = N + 1
Select Case N
Case 1
title = Worksheets('Données').Range('O2').Value2
Worksheets('Tableau').Range(cells (8,2),cells(100,29)).Copy _
Destination:=Worksheets(i).Range('A1')
 

Pierre

XLDnaute Occasionnel
Bonsoir nanard et le forum,


A mon avis dans la première proposition tu sélectionnes une plage de cellule par
Worksheets('Tableau').Range('B8:AD100')
Alors que par la suite tu utilises une virgule et non les deux points définissant une plage.
Une piste?



Pierre
 

Pierre

XLDnaute Occasionnel
Pierre écrit:
Bonsoir nanard et le forum,


A mon avis dans la première proposition tu sélectionnes une plage de cellule par
Worksheets('Tableau').Range('B8:AD100')
Alors que par la suite tu utilises une virgule et non les deux points définissant une plage.
Une piste?



Pierre
qui s'est planté à son interro de C++ :(
 

Dan

XLDnaute Barbatruc
Bonsoir,

Bon en regardant tes macros, je ne vois pas ce qui cloche à vrai dire.

Mais juste une piste, essaie de faire fonctionner tes macros via menu / outils / macro et pas par VBA. J'ai remarqué déjà que l'instrcution 'copy' fait parfois des plantages suivant que l'on commande la macro par VBA ou via le menu excel.
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Nanard, Pierre, Dan.

For i = 1 To Number
      Title = Sheets(i).Name
      If Exclusion(Title) = False Then
            N = N + 1
            Select Case N
                  Case 1
                  Title = Worksheets('Données').Range('O2').Value2
                  Worksheets('Tableau').Range(Cells(8, 2), Cells(100, 29)).Copy _
                  Destination:=Worksheets(i).Range('A1')
Visiblement, tu ne lances pas cette macro depuis la feuille 'Tableau' ou bien, cette feuille n'est pas la feuille active lorsque la procédure tourne... et c'est là ton problème je pense.

En effet, dans Worksheets('Tableau').Range(..., l'objet Range est bien qualifié comme faisant partie de la feuille 'Tableau', mais dans Cells(8, 2), Cells(100, 29) par contre, les objets Cells ne sont pas considérés comme appartenant à la feuille 'Tableau' mais comme appartenant à la feuille active d'où problème dans ce genre de situation...

Pour que ça puisse fonctionner correctement, il conviendrait d'écrire :
Worksheets('Tableau').Range(Worksheets('Tableau').Cells(8, 2), _
Worksheets('Tableau').Cells(100, 29)).Copy Destination:=Worksheets(i).Range('A1')
ou mieux encore :
With Worksheets('Tableau')
      .Range(.Cells(8, 2), .Cells(100, 29)).Copy Destination:=Worksheets(i).Range('A1')
End With
Note bien les 'points' devant les objets Range et Cells.

Cordialement.
 
N

Nanard

Guest
Erreur 1004

Salut MDF
je reviens à la charge avec ce nouveau pb déjà expliciter sur le forum:
Sub OrdreHierar() 'ne fonctionne pas
PersDiv = Sheets('Données').Cells(12, 3).Value2 '

Worksheets('Personnels').Range(Cells(2, 1), Cells(PersDiv + 1, 7)).Sort _
Key1:=Worksheets('Personnels').Range(Cells(2, 1)), order1:=xlDescending, _
Key2:=Worksheets('Personnels').Range(Cells(2, 3)), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Sub OrdreHierar() ''fonctionne

PersDiv = Sheets('Données').Cells(12, 3).Value2 '

'Worksheets('Personnels').Range(Cells(“A2:G38”).Sort _
Key1:=Worksheets('Personnels').Range('A2'), Order1:=xlDescending, _
Key2:=Worksheets('Personnels').Range('C2'), Order2:=xlAscending ', _
'Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Je dois me planter sur une référence par rapport à une feuille mais voilà je fais choux blanc..... MCI de ton aide
 

myDearFriend!

XLDnaute Barbatruc
Re:Erreur 1004

Bonjour Nanard, le Forum.

Tout d'abord, je suis surpris que ta deuxième procédure, telle que tu l'as écrite puisse fonctionner !
      Worksheets('Personnels').Range(Cells(“A2:G38”).Sort _
            Key1:=Worksheets('Personnels').Range('A2'), Order1:=xlDescending, _
            Key2:=Worksheets('Personnels').Range('C2'), Order2:=xlAscending ', _
            Header:=xlGuess, OrderCustom:=1, _
            MatchCase:=False, Orientation:=xlTopToBottom
Pour la première, le problème est toujours le même et je suppose que l'arrangement ci-dessous devrait fonctionner :
Sub OrdreHierar()
      PersDiv = Sheets('Données').Cells(12, 3).Value2
     
      With Worksheets('Personnels')
            .Range(.Cells(2, 1), .Cells(PersDiv + 1, 7)).Sort _
                  Key1:=.Cells(2, 1), order1:=xlDescending, _
                  Key2:=.Cells(2, 3), Order2:=xlAscending, _
                  Header:=xlGuess, OrderCustom:=1, _
                  MatchCase:=False, Orientation:=xlTopToBottom
      End With
End Sub
Pour info, une référence comme Range(Cells(2, 1)) ça n'existe pas... il convient de mettre simplement Cells(2, 1)

Au besoin, je t'invite à consulter l'aide VBA sur le sujet (faire une recherche sur le mot 'référence'). Et si je puis donner mon avis, une bonne compréhension du référencement de cellule(s) ou de plage(s) me paraît indispensable...

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
314 011
Messages
2 104 528
Membres
109 061
dernier inscrit
nedjima