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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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')
 
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 é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++ 🙁
 
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.
 
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.
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
897
Réponses
15
Affichages
760
Réponses
3
Affichages
870
Retour