XL 2016 Boucle codename

bonoboas

XLDnaute Occasionnel
Bonjour,
Je me permets de vous solliciter pour vos lumières sur une simple boucle d'un codename :
J'ai nommé les codenames de mon classeur de la façon suivante : DQE11, DQE12, DQE13 jusqu'au DQE43
Le but de cette macro est de faire une récap c'est à dire copier les données de l'ensemble des feuilles DQE dans la feuille Récap les unes sous les autres (je mettrais un filtre par la suite)
Mais le code ne boucle pas :
Code:
Sub Recap()
Dim dlgR As Integer, dlgi As Integer
Dim i As Byte
Dim Ws As Worksheet
With Sheets("RECAP")
dlgR = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:F" & dlgR).ClearContents
End With
For i = 11 To 43
Set Ws = DQE & i
dlgR = Sheets("RECAP").Range("A" & Rows.Count).End(xlUp).Row
dlgi = Ws.Range("A" & Rows.Count).End(xlUp).Row
Ws.Range("A1:F" & dlgi).Copy Sheets("RECAP").Range("A" & dlgR + 1)
Next i

End Sub

Merci d'avance pour votre aide
Cordialement
Anthony
 

bonoboas

XLDnaute Occasionnel
Voici les noms des feuilles (propriété : name) : démolition, gros-oeuvre, charpente, couverture...
Voici les noms des codename (propriété : (name)) : DQE11,DQE12,DQE13....
attention les parenthèses ont une importance ici, mais je pense que vous savez :)
Ces noms peuvent être changer par l'utilisateur, j'ai fait le choix d'utiliser des codenames simple pour faire une boucle.
 

bonoboas

XLDnaute Occasionnel
Merci Jean-Marie ça marche voici le code final
Si ça peut servir :

VB:
Sub Recap()
Chiffrage10.Activate
Dim dlgR As Integer, dlgi As Integer
Dim i As Byte
Dim Ws As Worksheet
With Sheets("RECAP")
dlgR = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:F" & dlgR).ClearContents
End With
For i = 11 To 43
For Each Ws In Worksheets
If Ws.CodeName Like "DQE" & i Then
dlgR = Sheets("RECAP").Range("A" & Rows.Count).End(xlUp).Row
dlgi = Ws.Range("A" & Rows.Count).End(xlUp).Row
Ws.Range("A1:J" & dlgi).Copy Sheets("RECAP").Range("A" & dlgR + 1)

End If
Next
Next
End Sub

Merci beaucoup
 

ChTi160

XLDnaute Barbatruc
re
Dans ta procedure
tu peux aussi mettre :
dlgR = .Range("A" & Rows.Count).End(xlUp).Row+1
pour obtenir la derniere ligne non vide et oter le +1
de
Ws.Range("A1:J" & dlgi).Copy Sheets("RECAP").Range("A" & dlgR)
bonne continuation
amicalement
jean marie
 

Discussions similaires

Réponses
7
Affichages
328

Statistiques des forums

Discussions
312 282
Messages
2 086 756
Membres
103 388
dernier inscrit
Juju7762