Copie conditionnelle de cellules

jim7963

XLDnaute Junior
Bonjour à tous,

je vous écris car j'aurais à nouveau besoin de vos lumières pour aider le débutant que je suis avec un code vba.

J'extrais sous excel un fichier pour lequel j'ai créé une macro qui réalise un certain nombre d'actions. J'aimerais rajouter l'action suivante à cette macro:
Dans mon tableau j'ai en colonne A les matricules salariés , en colonne B les noms et prénoms des salariés et en colonne C les rayons dans lesquels ils ont travaillé dans le mois. Un même salarié peut travailler dans plusieurs rayons. Lorsque je fais mon extraction je récupère le matricule et le nom du salarié qu'une seule fois en A et B et en C il y a la déclinaison des rayons à raison d'un rayon par ligne.

Je souhaiterais que ma macro reprenne le matricule en A et le nom en B et qu'elle les reporte sur chaque ligne à côté du rayon dans lequel elle a travaillé.

Par exemple j'ai un matricule et un nom en A2 et B2 et des rayons en C2, C3 et C4. Je veux qu'il fasse un copier coller de A2 et B2 en A3,A4,B3 et B4. Qu'il repère qu'en C5 il y a une cellule vide et que donc il arrête sa copie et passe au nom suivant en A6 et B6, s'il a des rayons en C6 et C7, il doit copier A6 en A7 et B6 en B7, il repère qu'en C8 la cellule est vide il passe donc au nom suivant en A9 et B9... et ainsi de suite jusqau'au dernier matricule qu'il trouve car le nombre de personne et de ligne varie chaque mois.

Pour être plus clair je vous joins un fichier avec un onglet avant l'action de la macro et un onglet qui montre le résultats après l'application de la macro.

Je vous remercie par avance de toute l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Classement du personnel.xlsx
    16 KB · Affichages: 64

Modeste

XLDnaute Barbatruc
Re : Copie conditionnelle de cellules

Bonsoir jim7963,

En admettant que j'aie bien compris, il me semble que ce qui suit devrait fonctionner ... Insère le code dans un module standard et exécute-le
VB:
Sub recopie()
Application.ScreenUpdating = False
With Sheets("Avant Macro")
    For Each c In .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row)
        If c <> "" And c.Offset(0, -1) = "" Then _
            c.Offset(-1, -2).Resize(1, 2).Copy c.Offset(0, -2)
    Next c
End With
End Sub

... et puis dis-nous si c'est ce que tu voulais ...
 

Discussions similaires

Réponses
5
Affichages
98

Statistiques des forums

Discussions
312 115
Messages
2 085 455
Membres
102 891
dernier inscrit
cocowild