Bonjour,
J'essaie de cr=E9er un prgramme VBA pour faire un r=E9capitulatif de tous
mes onglets ( un par mois ) dans une seule feuille que j'appelerais
recap. Dans le futur j'essaierais aussi de rajouter des conditions,
mais pour l'instant je n'arrive d=E9ja pas a copier toutes les donn=E9es.
J'ai bricol=E9 un code qui ressemble a ca :
Dim x, y As Integer
Dim Ligne As Variant
Private Sub CommandButton1_Click()
x =3D 5 'D=E9but de mon tableau =E0 copier
y =3D 2 'D=E9but de mon tableau d'arriv=E9e
With Worksheets
Sheets("Janvier 06").Select ' Pour l'instant je copie d'une feuille
fixe
For x =3D 5 To 100 'ActiveSheet.UsedRange.Rows.Count
Rows(x).Copy
Ligne =3D "A" & y
Worksheets("Recap").Select
Range(Ligne).Select
Selection.Paste
y =3D ActiveSheet.UsedRange.Rows.Count + 1
x =3D x + 1
Sheets("Janvier 06").Select
Next
End With
End Sub
Pour l'instant j'ai une erreur 438, mais j'ai eu aussi des erreurs 1004
il me semble.
Ca fait trois jours que je m'arrache les cheveux, du coup je viens voir
si quelqu'un avait une piste pour m'aider
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
Bonjour
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour respecter ton souhait que ta feuille destination s'appelle RECAP. Je suppose que dans tes feuilles à copier on comence à la ligne 5 et qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
Dim tableau(1 To 3) As String, derligne(1 To 3) As Long
With Sheets(tableau(1)) derligne(1) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With With Sheets(tableau(2)) derligne(2) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With With Sheets(tableau(3)) derligne(3) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With
For I = 1 To 3 With Sheets("RECAP") On Error Resume Next ligneRECAP = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row If Err.Number <> 0 Then Err.Clear: ligneRECAP = 1 End With Sheets(tableau(I)).Range("A5:A" & derligne(I)).EntireRow.Copy Sheets("RECAP").Range("A" & ligneRECAP + 1) Next
A+
wrote:
Bonjour, J'essaie de créer un prgramme VBA pour faire un récapitulatif de tous mes onglets ( un par mois ) dans une seule feuille que j'appelerais recap. Dans le futur j'essaierais aussi de rajouter des conditions, mais pour l'instant je n'arrive déja pas a copier toutes les données.
J'ai bricolé un code qui ressemble a ca :
Dim x, y As Integer Dim Ligne As Variant Private Sub CommandButton1_Click() x = 5 'Début de mon tableau à copier y = 2 'Début de mon tableau d'arrivée With Worksheets Sheets("Janvier 06").Select ' Pour l'instant je copie d'une feuille fixe For x = 5 To 100 'ActiveSheet.UsedRange.Rows.Count Rows(x).Copy Ligne = "A" & y Worksheets("Recap").Select Range(Ligne).Select Selection.Paste y = ActiveSheet.UsedRange.Rows.Count + 1 x = x + 1 Sheets("Janvier 06").Select Next End With End Sub
Pour l'instant j'ai une erreur 438, mais j'ai eu aussi des erreurs 1004 il me semble.
Ca fait trois jours que je m'arrache les cheveux, du coup je viens voir si quelqu'un avait une piste pour m'aider
Merci d'avance
Bonjour
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour
respecter ton souhait que ta feuille destination s'appelle RECAP. Je
suppose que dans tes feuilles à copier on comence à la ligne 5 et
qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
Dim tableau(1 To 3) As String, derligne(1 To 3) As Long
With Sheets(tableau(1))
derligne(1) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
End With
With Sheets(tableau(2))
derligne(2) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
End With
With Sheets(tableau(3))
derligne(3) = .Cells.Find("*", .Range("A1"), xlFormulas, ,
xlByRows, xlPrevious).Row
End With
For I = 1 To 3
With Sheets("RECAP")
On Error Resume Next
ligneRECAP = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
If Err.Number <> 0 Then Err.Clear: ligneRECAP = 1
End With
Sheets(tableau(I)).Range("A5:A" & derligne(I)).EntireRow.Copy
Sheets("RECAP").Range("A" & ligneRECAP + 1)
Next
A+
sloun@fbtg.net wrote:
Bonjour,
J'essaie de créer un prgramme VBA pour faire un récapitulatif de tous
mes onglets ( un par mois ) dans une seule feuille que j'appelerais
recap. Dans le futur j'essaierais aussi de rajouter des conditions,
mais pour l'instant je n'arrive déja pas a copier toutes les données.
J'ai bricolé un code qui ressemble a ca :
Dim x, y As Integer
Dim Ligne As Variant
Private Sub CommandButton1_Click()
x = 5 'Début de mon tableau à copier
y = 2 'Début de mon tableau d'arrivée
With Worksheets
Sheets("Janvier 06").Select ' Pour l'instant je copie d'une feuille
fixe
For x = 5 To 100 'ActiveSheet.UsedRange.Rows.Count
Rows(x).Copy
Ligne = "A" & y
Worksheets("Recap").Select
Range(Ligne).Select
Selection.Paste
y = ActiveSheet.UsedRange.Rows.Count + 1
x = x + 1
Sheets("Janvier 06").Select
Next
End With
End Sub
Pour l'instant j'ai une erreur 438, mais j'ai eu aussi des erreurs 1004
il me semble.
Ca fait trois jours que je m'arrache les cheveux, du coup je viens voir
si quelqu'un avait une piste pour m'aider
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour respecter ton souhait que ta feuille destination s'appelle RECAP. Je suppose que dans tes feuilles à copier on comence à la ligne 5 et qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
Dim tableau(1 To 3) As String, derligne(1 To 3) As Long
With Sheets(tableau(1)) derligne(1) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With With Sheets(tableau(2)) derligne(2) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With With Sheets(tableau(3)) derligne(3) = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row End With
For I = 1 To 3 With Sheets("RECAP") On Error Resume Next ligneRECAP = .Cells.Find("*", .Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row If Err.Number <> 0 Then Err.Clear: ligneRECAP = 1 End With Sheets(tableau(I)).Range("A5:A" & derligne(I)).EntireRow.Copy Sheets("RECAP").Range("A" & ligneRECAP + 1) Next
A+
wrote:
Bonjour, J'essaie de créer un prgramme VBA pour faire un récapitulatif de tous mes onglets ( un par mois ) dans une seule feuille que j'appelerais recap. Dans le futur j'essaierais aussi de rajouter des conditions, mais pour l'instant je n'arrive déja pas a copier toutes les données.
J'ai bricolé un code qui ressemble a ca :
Dim x, y As Integer Dim Ligne As Variant Private Sub CommandButton1_Click() x = 5 'Début de mon tableau à copier y = 2 'Début de mon tableau d'arrivée With Worksheets Sheets("Janvier 06").Select ' Pour l'instant je copie d'une feuille fixe For x = 5 To 100 'ActiveSheet.UsedRange.Rows.Count Rows(x).Copy Ligne = "A" & y Worksheets("Recap").Select Range(Ligne).Select Selection.Paste y = ActiveSheet.UsedRange.Rows.Count + 1 x = x + 1 Sheets("Janvier 06").Select Next End With End Sub
Pour l'instant j'ai une erreur 438, mais j'ai eu aussi des erreurs 1004 il me semble.
Ca fait trois jours que je m'arrache les cheveux, du coup je viens voir si quelqu'un avait une piste pour m'aider
Merci d'avance
sloun
Merci beaucoup, je vais essayer de comprendre et tester tout ca :)
Bonjour
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour respecter ton souhait que ta feuille destination s'appelle RECAP. Je suppose que dans tes feuilles à copier on comence à la ligne 5 et qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
Merci beaucoup, je vais essayer de comprendre et tester tout ca :)
Bonjour
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour
respecter ton souhait que ta feuille destination s'appelle RECAP. Je
suppose que dans tes feuilles à copier on comence à la ligne 5 et
qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
Merci beaucoup, je vais essayer de comprendre et tester tout ca :)
Bonjour
Imaginons que tes feuilles s'appellent toto, tata, tutu et pour respecter ton souhait que ta feuille destination s'appelle RECAP. Je suppose que dans tes feuilles à copier on comence à la ligne 5 et qu'il y a forcément quelque chose en ligne 5 au moins ou plus.
sloun
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
j'ai essayé de le declarer comme range mais ca ne marche pas
anonymousA
le on error resume next est là pour prendre en compte le fait que la 1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun objet range et dans ces conditions rien.row renvoie une erreur. Il ne faut donc pas l'enlever sauf si on est certain qu'il existe quelque chose sur la feuille RECAP la 1ere fois où la boucle est parcourue. Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on error resume next et du coup on passe la valeur ligneRECAP manuellement à 1.
A+
wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
j'ai essayé de le declarer comme range mais ca ne marche pas
le on error resume next est là pour prendre en compte le fait que la
1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun
objet range et dans ces conditions rien.row renvoie une erreur. Il ne
faut donc pas l'enlever sauf si on est certain qu'il existe quelque
chose sur la feuille RECAP la 1ere fois où la boucle est parcourue.
Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on
error resume next et du coup on passe la valeur ligneRECAP manuellement
à 1.
A+
s...@fbtg.net wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error
resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
le on error resume next est là pour prendre en compte le fait que la 1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun objet range et dans ces conditions rien.row renvoie une erreur. Il ne faut donc pas l'enlever sauf si on est certain qu'il existe quelque chose sur la feuille RECAP la 1ere fois où la boucle est parcourue. Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on error resume next et du coup on passe la valeur ligneRECAP manuellement à 1.
A+
wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
j'ai essayé de le declarer comme range mais ca ne marche pas
anonymousA
et j'oubliais, ligneRECAP est un nombre et en aucun cas un range.
A+
anonymousA wrote:
le on error resume next est là pour prendre en compte le fait que la 1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun objet range et dans ces conditions rien.row renvoie une erreur. Il ne faut donc pas l'enlever sauf si on est certain qu'il existe quelque chose sur la feuille RECAP la 1ere fois où la boucle est parcourue. Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on error resume next et du coup on passe la valeur ligneRECAP manuellement à 1.
A+
wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
j'ai essayé de le declarer comme range mais ca ne marche pas
et j'oubliais, ligneRECAP est un nombre et en aucun cas un range.
A+
anonymousA wrote:
le on error resume next est là pour prendre en compte le fait que la
1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun
objet range et dans ces conditions rien.row renvoie une erreur. Il ne
faut donc pas l'enlever sauf si on est certain qu'il existe quelque
chose sur la feuille RECAP la 1ere fois où la boucle est parcourue.
Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on
error resume next et du coup on passe la valeur ligneRECAP manuellement
à 1.
A+
s...@fbtg.net wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error
resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :
et j'oubliais, ligneRECAP est un nombre et en aucun cas un range.
A+
anonymousA wrote:
le on error resume next est là pour prendre en compte le fait que la 1ere fois la feuille récap est vide auquel cas, Find ne renvoie aucun objet range et dans ces conditions rien.row renvoie une erreur. Il ne faut donc pas l'enlever sauf si on est certain qu'il existe quelque chose sur la feuille RECAP la 1ere fois où la boucle est parcourue. Donc si la feuille RECAP est vide, on skippe l'erreur en utilisant on error resume next et du coup on passe la valeur ligneRECAP manuellement à 1.
A+
wrote:
Ca marche pas, j'ai toujours une erreur 438 quand j'enleve le on error resume next
est ce qu'il ne faudrait pas que je déclare lignerecap avant ca :