XL 2010 VBA copier/coller cellules en fonction de 2 critères

  • Initiateur de la discussion Initiateur de la discussion arno1234
  • Date de début Date de début

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 !

arno1234

XLDnaute Nouveau
Bonjour à tous,

je viens chercher votre aide sur ce forum car j'ai besoin de créer une macro me permettant de copier les valeurs d'une colonne de la feuille 1 et de les reporter dans la feuille 2 en respectant 2 critères : critère de la colonne A de la feuille 1 ainsi que critère de la valeur en I2 de la feuille 1. Les valeurs doivent ensuite se coller dans la feuille dans la colonne correspondant a la valeur I2 de la feuille 1 et dans la même ligne.

En PJ le fichier de travail qui sera plus parlant.

Je vous remercie d'avance,

Arnaud.
 

Pièces jointes

Solution
Bonjour,
Code à mettre dans celui de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sem As Range, Emp1 As Range, Emp2 As Range
    If Target.Address = [I1].Address Then ' la cellule modifiée doit être I7
      ' On recherche I7 dans la ligne 1 de Feuil2
        Set Sem = Sheets("Feuil2").Rows(1).CurrentRegion.Find(Target, , xlValues, xlWhole)
        If Not Sem Is Nothing Then
          ' pour tous les Emplacements de Feuil1
            For Each Emp1 In Me.Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
              ' On recherche Emp1 dans feuil2
                Set Emp2 = Sheets("Feuil2").Columns("A").Find(Emp1, , xlValues, xlWhole)
              ' On renseigne la colonne de la semaine en Feuil2...
Bonjour,
Code à mettre dans celui de la feuille Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sem As Range, Emp1 As Range, Emp2 As Range
    If Target.Address = [I1].Address Then ' la cellule modifiée doit être I7
      ' On recherche I7 dans la ligne 1 de Feuil2
        Set Sem = Sheets("Feuil2").Rows(1).CurrentRegion.Find(Target, , xlValues, xlWhole)
        If Not Sem Is Nothing Then
          ' pour tous les Emplacements de Feuil1
            For Each Emp1 In Me.Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
              ' On recherche Emp1 dans feuil2
                Set Emp2 = Sheets("Feuil2").Columns("A").Find(Emp1, , xlValues, xlWhole)
              ' On renseigne la colonne de la semaine en Feuil2
                If Not Emp2 Is Nothing Then Sheets("Feuil2").Cells(Emp2.Row, Sem.Column) = Emp1.Offset(, 5)
            Next
        End If
    End If
End Sub
 
Bonjour,

merci pour votre réponse mais je n'arrive pas à exécuter le code. Faut-il que je code dans un nouveau module ou que je double clique dans la feuille équivalente à la feuil1 de mon exemple et que j'y colle le code ?
J'ai essayé les 2 et quand je fais exécuter, cela me demande un nom de macro et cela crée un nouveau sub()....
 
Bonjour Fanch,

j'ai besoin de rajouter une colonne dans la feuille 2 (les semaines commencent donc en C et non en B) mais je n'arrive pas à modifier la macro.

Pouvez-vous m'aider ?

Merci !
Rien n'empêche l'ajout d'une colonne en feuille 2 .
arno.gif
 
- 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

Retour