Problème de sélection de feuille excel - VB/VBA/VBS - Programmation
Marsh Posté le 11-04-2006 à 11:37:22
désolé pour les balises... J'avais tapé sou word, je referait plus.
Tyl
Marsh Posté le 11-04-2006 à 22:54:10
Je pense que l'erreur vient de cette ligne :
Sheets(i).Rows(6, a).Copy |
qui doit s'écrire :
Sheets(i).Rows(6 + a).Copy |
Cordialement
Epéna
Marsh Posté le 12-04-2006 à 00:53:32
bonjour,
Sur le fond l'erreur vient bien de là mais de plus, il y a un problème sur la valeur de "a" :
comme tu le présentes, a = 0 pendant toute ta procédure. (0 + 0 = 0 ! )
Quand tu donnes du code, tu recopies directement (et intégralement) ton code depuis VBA (par Copier/Coller), parce que s'il y a des erreurs de codes + des erreurs de traduction + des erreurs de frappe ou/et des oublis, on risque de comprendre ce que tu n'as pas voulu dire et de te répondre quelque chose que tu ne comprendras pas !
Il n'y a rien qui ressemble plus à une erreur de code qu'un code incomplet...
Alors autant écrire en braille...
A+
Marsh Posté le 12-04-2006 à 08:37:46
Merci pour les réponses,
Je vais essayer de ne plus écrire en langage cunéiforme et d'être plus clair.
D'abord voilà le copier/coller de mon code:
Dim nbfeuil As Integer
Dim i As Integer
Dim pas As Integer
nbfeuil = Sheets.Count
pas = 0
For i = 1 To (nbfeuil - 1) Step 1
Sheets(i).Rows(6, Sheets(i).Cells(3, 1)).Copy
Sheets(nbfeuil).Rows(6, Sheets(i).Cells(3, 1) + pas).Paste
pas = Sheets(i).Cells(3, 1) + pas
Next
Dans chacune des feuilles il y a dans la cellule (3,1) le numéro de le dernière ligne du tableau de donnée.
C'est pour ça que j'avais écrit rows(6, sheets(i).cells(3,1)).copy
Je voudrais copier la zone de la ligne 6 à la ligne sheets(i).cells(3,1)
J'espère être plus clair.
Lorsque j'écris Sheets(i).Rows(6 + Sheets(i).Cells(3, 1)).Copy il ne me met plus erreur 100' défine par l'application ou par l'objet mais il copie une seule ligne et pas la plage de ligne.
De plus, lorsque j'écris Sheets(nbfeuil).Rows(6 + Sheets(i).Cells(3, 1) + pas).Paste j'obtiens une erreur 438 propriété ou méthode non gérée par l'objet.
J'ai essayé de remplacer la sélection de lignes par une plage range mais même problème.
Est-ce que j'aurai pas un soucis au niveau de paste, par rapport à la taille de la zone copiée et celle collée?
Toujours est-il que j'ai toujours un problème et qu'un peu d'aide me serait encore d'une grande utilité.
Merci encore.
Yann
Marsh Posté le 11-04-2006 à 11:32:17
Bonjour,
Jai un classeur Excel qui contient plusieurs feuilles, le nombre nest pas fixe. Jaimerai copier une zone de chacune de ces feuilles dans une dernière (qui est dans le même classeur).
(Je préviens que je ne suis pas une star en programmation)
[size=2]
[/size]Je récupère le nombre de feuilles par Sheets.count. Jappelle cette variable Nbfeuil
Jai besoin de sélectionner mes feuilles sources de données une par une. Jaimerai bien faire une boucle du genre :
Pour i = 1 à (Nbfeuil 1) faire
1 cest parce que ma dernière feuillé cest celle où je copie mes données.
[size=2] Copier la zone qui va bien de la feuille 1
[/size][size=2] Coller dans la feuille nombre de feuille
[/size]Next
[size=2]
[/size]Ca donne ça :
[size=2] a=0
[/size][size=2] For i = 1 To (nbfeuil - 1) Step 1
[/size][size=2] Sheets(i).Rows(6, a).Copy
[/size][size=2] Sheets(nbfeuil).Rows(6 + a).Paste
[/size][size=2] a=a+a
[/size][size=2] Next
[/size][size=2]
[/size]Mon truc avec la variable a cest parce que normalement je récupère la longueur de la zone dans une cellule de chaque feuille.
Je reçois comme message derreur : Erreur dexécution 1004, Erreur définie par lapplication ou par lobjet.
Je ne sais si cest un problème avec ladressage de mes feuilles sheets(_) ou si cest mon utilisation du mode de copie ou autre chose.
Je crains que ce soit vraiment tout bête mais. Je vois pas.
J'espère avoir été clair?
[size=2]
[/size]Merci pour votre aide.
[size=2]
[/size]Tyl