Problème de regroupement
Bonjour,
Dans mon classeur, j'aimerais regrouper les infos de plusieurs feuilles selon certain critères en une seule page (pour la création d'étiquettes)
Ce que j'ai réussi a faire, mais le résultat n'est pas optimal a mon gout.
Il y a quelques petits trucs qui ne me "conviennent" pas.
Dans la macro "Etiquettes" du module "Etiquette"
Lorsque celle-ci tourne, la page Gabarit est bien "Sautée" mais pas celle des accessoires et des figurines. PQ? je ne comprend pas.
Ensuite je ne comprend pas pourquoi il commence a la 2 ieme colonne au lieu de la première.
Je ne sais pas si je me suis bien fait comprendre.
Merci a ceux qui prennent le temps de regarder a mon problème.
Bonjour,
Utilise des And > pas de Or > il va y avoir une différence ...
Te convient-elle ?
ric
Bonsoir,
proposition de code en supposant que les 4 premières feuilles restent toujours "en tête" du classeur :
Sub etiquettes_()
' définition des variables
Dim I, J, Last, Ligne
' permet d'accélérer ou du moins ne pas ralentire l'exécution du code
' on enlève la mise à jour de l'écran
Application.ScreenUpdating = False
' on arrête les calcul dans le classeur
Application.Calculation = xlCalculationManual
' on efface les données de la feuille Etiquette
Sheets(1).Cells.Clear
' on définie le numéro de la première ligne à remplir
Ligne = 1
' on scan les feuilles du classeur de la feuille 5 au nombre de feuilles total du classeur
For I = 5 To Worksheets.Count
' on trouve la dernière ligne de la feuille considérée
Last = Sheets(I).Range("B" & Rows.Count).End(xlUp).Row
' on scan de la ligne 3 à la dernière ligne
For J = 3 To Last
' s'il reste des pièces
If Sheets(I).Cells(J, 5) > 0 Then
' on inscrit les données dans la colonne 1 pour la première feuille scannée (index 5 - 4 =1)
Sheets(1).Cells(Ligne, I - 4) = Sheets(I).Name & Chr(13) & Chr(10) & Sheets(I).Cells(J, 2)
' on incrémente ligne pour la donnée suivante
Ligne = Ligne + 1
End If
Next J
' on change de feuille donc de colonne donc la première ligne à renseigner est la 1 de nouveau
Ligne = 1
Next I
' on remet en marche les calculs du classeur
Application.Calculation = xlCalculationAutomatic
' la remise en marche de l'écran n'est pas utile en fin de sub, c'est automatique
End SubLe principe on boucle sur les feuille en fonction de leur index, ligne "repart" à 1 à chaque changement de feuille, et La colonne de remplissage correspond à l'index de la feuille "I" - les 4 feuilles "systèmes".
@ bientôt
LouReeD
Bonsoir,
proposition de code en supposant que les 4 premières feuilles restent toujours "en tête" du classeur :
Sub etiquettes_() ' définition des variables Dim I, J, Last, Ligne ' permet d'accélérer ou du moins ne pas ralentire l'exécution du code ' on enlève la mise à jour de l'écran Application.ScreenUpdating = False ' on arrête les calcul dans le classeur Application.Calculation = xlCalculationManual ' on efface les données de la feuille Etiquette Sheets(1).Cells.Clear ' on définie le numéro de la première ligne à remplir Ligne = 1 ' on scan les feuilles du classeur de la feuille 5 au nombre de feuilles total du classeur For I = 5 To Worksheets.Count ' on trouve la dernière ligne de la feuille considérée Last = Sheets(I).Range("B" & Rows.Count).End(xlUp).Row ' on scan de la ligne 3 à la dernière ligne For J = 3 To Last ' s'il reste des pièces If Sheets(I).Cells(J, 5) > 0 Then ' on inscrit les données dans la colonne 1 pour la première feuille scannée (index 5 - 4 =1) Sheets(1).Cells(Ligne, I - 4) = Sheets(I).Name & Chr(13) & Chr(10) & Sheets(I).Cells(J, 2) ' on incrémente ligne pour la donnée suivante Ligne = Ligne + 1 End If Next J ' on change de feuille donc de colonne donc la première ligne à renseigner est la 1 de nouveau Ligne = 1 Next I ' on remet en marche les calculs du classeur Application.Calculation = xlCalculationAutomatic ' la remise en marche de l'écran n'est pas utile en fin de sub, c'est automatique End SubLe principe on boucle sur les feuille en fonction de leur index, ligne "repart" à 1 à chaque changement de feuille, et La colonne de remplissage correspond à l'index de la feuille "I" - les 4 feuilles "systèmes".
@ bientôt
LouReeD
Merci louReed,
Est ce que dans la macro on peut y ajouter une mise en forme des texte copié.
Ex: J'aimerais que le Sheets(I).name importé soit en italique et en taille 10 et que le sheets(I).cells(j,2) soit en gras taille 12.
Merci
Bonjour,
la mise en forme de texte au sein d'une cellule... Là je ne sais pas si ce n'est de faire une recherche sur le site ou le net, mais ça je vous le laisse !
@ bientôt
LouReeD