Demande d'aide pour boucle VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hawkeye56

XLDnaute Junior
Bonjour à tous,

Je suis complètement débutant en VBA et j'ai besoin de votre aide.

J'ai un tableau de dotation de vêtement. Je souhaite faire une macro établissant les fiches de préparation pour chaque employé.
Déclencher le filtre auto "non vide" pour le 1er employé copier le résultat (là j'ai 2 plages non contigues) coller dans l'onglet "préparation"
Et recommencer pour chacun des employés jusqu'à la dernière colonne non vide.



Voilà ou j'en suis:Ca fonctionne mais pour le premier employé seulement


Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 12/01/2008

Range("E10:G10").Select
Selection.AutoFilter Field:=1, Criteria1:="<>"
'Déclenche le filtre automatique "non vide"
Range("A7:C" & Range("A65536").End(xlUp).Row).Select
'Sélectionne la 1ère plage
Selection.Copy
Sheets("préparation").Select
'Se place sur la 1ère cellule vide de la colonne A
[A65536].Select
Selection.End(xlUp)(2).Select
'Copie la premère plage
ActiveSheet.Paste
Sheets("Saisonniers").Select
Range("E7:E" & Range("A65536").End(xlUp).Row).Select
'Sélectionne la 2ème plage
Selection.Copy
Sheets("préparation").Select
'Se place sur la 1ère cellule vide de la colonne D
[D65536].Select
Selection.End(xlUp)(2).Select
ActiveSheet.Paste
'Copie la 2ème plage
Sheets("Saisonniers").Select
Selection.AutoFilter Field:=1
Application.CutCopyMode = False
'Déclenche le filtre automatique "tous"
ActiveWindow.SmallScroll ToRight:=3
'Décale de 3 colonnes vers la droite

End Sub

Il ya probablement une façon de faire plus simple mais je suis vraiment débutant.

D'avance je vous remercie de votre aide
Je joins mon fichier ce sera plus parlant
 

Pièces jointes

Dernière édition:
Re : Demande d'aide pour boucle VBA

Bonsoir Hawkeye56,

j'ai essayé de lancer ta macro en "pas à pas" pour comprendre ce que tu veux faire excatement mais elle plante à la copi de la 1ere plage.
Donc ré-explique plus clairement ce que tu veux.
 
Re : Demande d'aide pour boucle VBA

Bonsoir Skoobi


Si tu vas dans l'onglet "saisonniers" et que tu actives le bouton "editer fiche de préparation" et qu'ensuite tu vas dans l'onglet "préparation" tu verras qu 'il vient de s'y coller le résultat du tri concernant "Alain Térieur".

Je voudrais que cette opération se renouvelle pour chacun des employés.

Comme je débute en VBA il y a probablement des tas de trucs à changer...

Si tu souhaites avoir d'autres précisions n'hésite pas à me le faire savoir.

🙂

Je joins le fichier modifié
 

Pièces jointes

Re : Demande d'aide pour boucle VBA

Re bonsoir Hawkeye56,

je te propose une autre macro:

Code:
Sub test()
Sheets("préparation").Cells.Delete
dercol = [IV7].End(xlToLeft).Column
num = -2
For col = 5 To dercol Step 3
    der = Cells(65536, col).End(xlUp).Row
    num = num + 3
    Selection.AutoFilter Field:=num, Criteria1:="<>"
    Range("A7:C" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[A65536].End(xlUp)(4)
    Range(Cells(7, col), Cells(der, col + 2)).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[D65536].End(xlUp)(4)
    ActiveSheet.ShowAllData
Next
End Sub

Bon test 🙂
 
Re : Demande d'aide pour boucle VBA

Bonsoir Skoobi

J'ai tenté d'utiliser cette macro pour l'onglet "électricité" mais les 2 lignes de points en bas de tableau polluent le "copier- coller" dans l'onglet "préparation"

Comment faire pour que ces lignes ne soient pas prises en compte par la macro?

Merci🙂
 

Pièces jointes

Re : Demande d'aide pour boucle VBA

Re Bonsoir,

en vert les ajouts/modifs:

Code:
Sub test()
Sheets("préparation").Cells.Delete
dercol = [IV7].End(xlToLeft).Column
[B][COLOR="DarkGreen"]derlig = Range("A65536").End(xlUp).Row + 1[/COLOR][/B]
num = -2
For col = 5 To dercol Step 3
    der = Cells([B][COLOR="DarkGreen"]derlig[/COLOR][/B], col).End(xlUp).Row
    num = num + 3
    Selection.AutoFilter Field:=num, Criteria1:="<>"
    Range("A7:C" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[A65536].End(xlUp)(4)
    Range(Cells(7, col), Cells(der, col + 2)).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[D65536].End(xlUp)(4)
    ActiveSheet.ShowAllData
Next
End Sub
 
Re : Demande d'aide pour boucle VBA

Bonsoir Skoobi,

J'ai honte 😱, J'ai écrit trop vite.
Il me suffisait de mettre ces lignes au dessus du tableau , ça solutionne le problème d'une part et c'est plus lisible d'autre part.

Si tu as quelques instants, je voudrais bien que tu commentes les différentes phases de ce code de manière à ce que je le comprennes un peu mieux.

Encore merci de ton aide et de ta rapidité🙂
 
Re : Demande d'aide pour boucle VBA

Re,

pas de problème.

dercol = [IV7].End(xlToLeft).Column: récupère la dernière colonne non vide de la ligne 7
derlig = Range("A65536").End(xlUp).Row + 1: récupère la dernière ligne non vide de la colonne A puis ajoute 1
num = -2
For col = 5 To dercol Step 3: début de la boucle For......... Next de chaque personne
der = Cells(derlig, col).End(xlUp).Row: dernière ligne non vide dans le tableau pour chaque personne
num = num + 3
Selection.AutoFilter Field:=num, Criteria1:="<>"
Range("A7:C" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[A65536].End(xlUp)(4)
Range(Cells(7, col), Cells(der, col + 2)).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[D65536].End(xlUp)(4)
ActiveSheet.ShowAllData
Next
 
Re : Demande d'aide pour boucle VBA

Bonsoir Skoobi,

Merci de ces explications, même si je ne comprends pas tout ça m'éclaire un peu...

La macro fonctionne à merveille mais je vais te demander une dernière chose:
Peux-tu faire en sorte (je suis certain que la réponse est oui 🙂)que dans l'onglet "préparation" la ligne vide située sous la ligne "service" soit supprimée. De sorte que chaque petit tableau soit plus compact et plus lisible?


Quel ouvrage peux tu me conseiller pour débuter en VBA avec excel 2000?

Bonne soirée Skoob i🙂
 
Re : Demande d'aide pour boucle VBA

Re,

voici 🙂:

Code:
Sub test()
Sheets("préparation").Cells.Delete
dercol = [IV7].End(xlToLeft).Column
num = -2
For col = 5 To dercol Step 3
    der = Cells(65536, col).End(xlUp).Row
    num = num + 3
    Selection.AutoFilter Field:=num, Criteria1:="<>"
    Range("A7:C" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[A65536].End(xlUp)(4)
    Range(Cells(7, col), Cells(der, col + 2)).SpecialCells(xlCellTypeVisible).Copy Sheets("préparation").[D65536].End(xlUp)(4)
[B][COLOR="Green"]    Set fintableau = Sheets("préparation").[A65536].End(xlUp)
    fintableau.End(xlUp).Offset(-1, 0).EntireRow.Delete[/COLOR][/B]
    ActiveSheet.ShowAllData
Next
End Sub
Pour ce qui est du livre, fait une recherche sur "John Walkenbach", surnommé "Mr Spreadsheet", la référence en la matière.
 
Re : Demande d'aide pour boucle VBA

Bonjour Skoobi,

Il y a un truc bizarre: Quand j'efface les tous nombres correspondant aux dotations (dans les cellules blanches) et que je fais une nouvelle dotation la ligne blanche réapparait dans l'onglet "préparation" et la ligne contenant le nom de famille, elle n'appparait plus. Alors que tous fonctionne très bien avec les premiers chiffres entrés. Y a t'il une méthode précise pour effacer le contenu des cellules??
 
Dernière édition:
Re : Demande d'aide pour boucle VBA

Re,

Hawkeye56 a écrit:

Bonjour Skoobi,

Un message privé car je n'ai plus de réponse sur le forum

Il y a un truc bizarre: Quand j'efface les tous nombres correspondant aux dotations (dans les cellules blanches) et que je lance la macro après avoir entré d'autres chiffres, la ligne blanche réapparait dans l'onglet "préparation" et la ligne contenant le nom de famille, elle n'appparait plus.
Alors que tous fonctionne très bien avec les premiers chiffres entrés.
Y a t'il une méthode précise pour effacer le contenu des cellule quand il y a un filtre automatique et/ou une macro??

avant d'effacer le contenu affiche tout et ça doit marcher.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
547
Réponses
3
Affichages
193
Réponses
2
Affichages
500
  • Question Question
Microsoft 365 Code VBA
Réponses
2
Affichages
516
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
447
Réponses
6
Affichages
734
Retour