Résolu Macro VBA copier-coller tableaux help !

Debutantedina

Nouveau membre
Bonjour
Je dois copier une douzaines de tableaux ayant les mêmes étiquettes de colonnes sur une feuille 1. Je souhaite vous soumettre ma macro qui ne marche pas. Soyez indulgents je débute.
Merci d'avance pour vos précieux conseils !
 

Debutantedina

Nouveau membre
[cpp]

Sub Macro1()
'Voici ma macro qui:
'efface les données de la feuille 1 (qui est celle de la feuille
'récapitulative)
'copie la ligne 1 (qui est la ligne d'entêtes de colonnes) de la feuille 2 sur la feuille 1
'copie la plage des données des feuilles 2 au nombre total de feuilles du classeur sur la première feuille
'la plage copiée commence à partir de la ligne 2 jusqu'à la dernière ligne contenant des données (colonnes A à H ).
Dim Feuil1 As Worksheet
Dim l As Long
Dim f As Integer
Dim Plage As Range
Dim Lignes As Long
Sheets("Feuil1").Cells.Clear
Sheets("Environnement interne").Range("A1:H1").Copy _
Destination:=Sheets("Feuil1").Range("A1")
l = 2
For f = 2 To Sheets.Count
If Application.CountA(Sheets(f).Range("A2"). _
CurrentRegion) <> 0 Then
With Sheets(h)
Lignes = .Range("A:A").Find("*", , , , , xlPrevious).Row
Set Plage = .Range(.Cells(2, "A"), .Cells(Lignes, "H"))
End With
Plage.Copy Destination:=Sheets("Feuil1").Cells(l, "A")
l = Sheet("Feuil1").Range("A:A").Find("*", , , , , xlPrevious).Row + 1
End If
Next f
End Sub
[/cpp]
 

zeb

Modérateur
Meilleure réponse
Salut,

C'est pas mal tout ça.
Bon, tout d'abord, renseigne-toi sur la directive Option Explicit. C'est indispensable.
Ensuite, renseigne-toi sur ce qu'est l'indentation. Lire ton code pique les yeux, ma chère.

La collection de tous les onglets d'un classeur Excel , c'est Sheets que tu utilises. Mais ce classeur peut contenir plusieurs types d'onglets : feuille de calcul (Worksheet), graphique (Charts), macro XL4, boîte de dialogues, etc... A lire ton code, je t'exhorte à utiliser la collection Worksheets.

Code:
Range("A:A")
Moui... J'aurais tendance à écrire
Code:
Columns("A")
Columns(1)

Après avoir placer Option Explicit et corriger ton code, je t'invite à reposer ta question.
 

Debutantedina

Nouveau membre
[cpp]

Option Explicit
Sub Macro1()

'Voici une macro qui:
'efface les données de la feuille 1 (qui est la feuille récapitulative)
'copie la ligne 1 (qui est la ligne d'entêtes de colonnes) de la feuille 2 sur la feuille 1
'copie la plage des données des feuilles 2 au nombre total de feuilles du classeur sur la première feuille
'la plage copiée commence à partir de la ligne 2 jusqu'à la dernière ligne contenant des données (colonnes A à H ).

Dim l As Long

Dim f As Integer

Dim Plage As Range

Dim Lignes As Long

Dim Feuil1 As Worksheet

Worksheets("Feuil1").Cells.Clear
Worksheets("Environnement interne").Range("A1:H1").Copy _
Destination:=Worksheets("Feuil1").Range("A1")

l = 2

For f = 2 To Sheets.Count
If Application.CountA(Worksheets(f).Range("A2").CurrentRegion) <> 0 Then
With Worksheets(f)
Lignes = .Columns("A").Find("*", , , , , xlPrevious).Row
Set Plage = .Range(.Cells(2, "A"), .Cells(Lignes, "H"))
End With
Plage.Copy Destination:=Worksheets("Feuil1").Cells(l, "A")
l = Worksheets("Feuil1").Columns("A").Find("*", , , , , xlPrevious).Row + 1
End If
Next f

End Sub

[/cpp]



Mon code marche merci beaucoup zeb! je vais faire d'option Explicit UN IMPÉRATIF. Je ne sais pas si c'est mieux du coté de l'indentation mais j'espère que tes yeux piquent moins. Encore Merci pour le worksheets a la place de sheets ; j'apprends tous les jours!
 

Debutantedina

Nouveau membre


Merci beaucoup zeb ! je vais certainement refaire surface quand une autre macro m'empêchera de dormir... :D
:love:
 

zeb

Modérateur
Choisis la moins mauvaise des réponses, cela passera le topic en [Résolu].
 

zeb

Modérateur
Euh, les points je n'en fous un peu. Je suis au taquet ! T'as pas vu le rond jaune à côté de mon avatar ? :sol:

Je suis responsable de la bonne tenue de ce coin de forum, alors il faut une meilleure réponse à ce topic pour le marquer [Résolu] :p

elle est gentille cette "dina"
Mais tout le monde est gentil, ici ! [:spamafote]
Les grossiers et les méchants, je les botte hors d'ici [:zeb:4]
 

Debutantedina

Nouveau membre
et voila résolu ! J'étais je profitais juste du peu de jours de vacances qui me sont accordés . Et oui on soigne les yeux des pros! faut bien qu'ils voient bien nos prouesses.... heuh maladresses ! :D
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 133
Messages
6 718 048
Membres
1 586 392
Dernier membre
jpaulNonDispo
Partager cette page
Haut