Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

ChTi160

XLDnaute Barbatruc
Bonsoir bonoboas
Bonsoir le Fil,Le Forum
pourquoi ne pas nommer les feuilles ainsi et faite une boucle du genre
Set Ws=worksheets(“DQE”&i)
pas d ordi donc pas de test lol(telephone)
bonne soiree
Amicalement
jean marie
 

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
355
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…