XL 2010 Compléter ce code pour recopie de ligne si 2 critères sont respectés

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • 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 !

fb62840

XLDnaute Impliqué
Bonjour,

Pourriez-vous me proposer un code qui me permettrait de recopier la ligne d'une feuille (Feuil2) à la feuillle 1 sur la ligne 2 avec ces conditions :

sur la feuille 1 :
si la colonne h contient une valeur
Rechercher sur Feuil2 la ligne qui contient dans la colonne H la même valeur et la copier-coller sur la feuille 1 en A2

Si la colonne h ne contient aucune valeur
Si la colonne I contient une valeur et si la colonne K contient également obligatoirement une valeur
Recherchercher sur Feuil2 la ligne qui contient les mêmes valeurs en colonnes I et K et la copier-coller sur la feuille 1 en A2

Merci beaucoup

j'ai essayé plusieurs formulation mais ça ne marche pas :

exemple
Code:
With Sheets("Feuil2")
        If Sheets("Feuille1").Range("H2") <> "" Then
            For i = .Range("H65536").End(xlUp).Row To 2 Step -1
                If Range("H" & i).Value = Sheets("Feuille1").Range("H2").Value Then
                    .Rows(i).Copy Destination:=Sheets("Feuille1").Range("A2")
               End If
            Next i
        End If
        If Sheets("Feuille1").Range("i2") <>"" And Sheets("Feuille1).Range("K2") <>"" Then
          For i = .Range("H65536").End(xlUp).Row To 2 Step -1
           If Range("i" & i).Value = Sheets("Feuille1").Range("i2").Value  And Range("K" & i).Value = _ Sheets("Feuille1").Range("k2").ValueThen
                .Rows(i).Copy Destination:=Sheets("Feuille1").Range("A2")
        End If
            Next i
        End If
    End With
 
Re

Alors il faut modifier Utilise dans ta page perso, sinon ça porte à confusion. Em mettant rows(i), tu va rechercher toute les cellules qui ont la valeur h, donc tu va copier par exemple de H1 à H10. Si tu veux que la macro recherche une ligne à la fois, il faut supprimer la boucle for i. Mais pour mieux, t'aider, met le fichier avec quelques lignes seulement.
 
Dernière édition:
Bonjour,

J'en suis là, les choses avancent mais je ne suis pas au bout, je n'arrive pas à vérifier la présence de 2 critères sur la même ligne, un peu d'aide serait bienvenu

Code:
Sub MASU()
Dim nbre As Integer, Lig As Integer, Cptr As Integer
Dim criter1 As String, criter2 As String, criter3 As String
Dim i As Long
Dim nome As String, noment As String
Dim L As Integer

Application.ScreenUpdating = False

criter1 = Range("H2").Value
criter2 = Range("F2").Value
criter3 = Range("I2").Value

If criter1 <> "" Then
With Sheets("Feuil2")
nbre = Application.WorksheetFunction.CountIf(Sheets("Feuil2").Range("H2:H1000"), criter1)
If nbre = 1 Then
L = Worksheets("Feuil2").Columns("H:H").Find(criter1, lookat:=xlWhole).Row
Worksheets("Feuil2").Rows(L & ":" & L).Copy Destination:=Worksheets("Feuille1").Cells(2, 1)
Worksheets("Feuille1").Activate
Range("A2").Select
Exit Sub
End If
End With
End If

If criter2 <> "" And criter3 <> "" Then

With Sheets("Feuil2")
nbre = Application.WorksheetFunction.CountIf(Sheets("Feuil2").Range("H2:H1000"), criter2)
If nbre = 0 Then
MsgBox ("Le critère 2 n'a pas été trouvé !"), vbCritical
Worksheets("Feuille1").Activate
Range("A2").Select
Exit Sub
End If

nbre = Application.WorksheetFunction.CountIf(Sheets("Feuil2").Range("i2:i1000"), criter3)
If nbre = 0 Then
MsgBox ("Le critère 3 n'a pas été trouvé !"), vbCritical
Worksheets("Feuille1").Activate
Range("A2").Select
Exit Sub
End If

If nbre <> 1 Then
"C'est ici que je n'arrive pas à écrire le code qui me permettrait de trouver la ligne qui contiendrait les 2 critères"
End If

End If

End Sub
 
Re

Regarde dans le classeur si c'est ce que tu cherche à faire. Pour l'instant il y a juste le critère de la colonne h, qui se trouve en A2. Clique sur le bouton pour voir le résultat. Et j'aimerais savoir quand est-ce que tu va mettre ton classeur. C'est quand même pas penible, non? Après 531 messages tu devrais le savoir. En plus, de 2 tu passe à 3 critères et dans le prochain message, il y aura combien de critères??? 🙄
 

Pièces jointes

Dernière édition:
Bonjour,
Merci pour votre aide.

Navré de causer des problèmes et de la tension.

Je comprends le principe du code présent dans votre macro.
Comment modifier la ligne :

Code:
cel.Copy Sheets(1).Range("a65536").End(xlUp)(2)
Pour obtenir le renvoie de la ligne sur la ligne 2 de la feuille 1 ?

Remarque votre code vérifie ensuite les critères 2 et 3 indépendamment mais il faudrait les traiter ensemble
Il faut que les 2 critères soient présents pour recopier la ligne sur la ligne 2 de la feuille 1

POur essayer d'être clair :
si le critère 1 est présent, pas besoin de lancer la vérification des critères 2 et 3 pour afficher la ligne sur la feuille 1
Mais, si le critère 1 est absent, il faut vérifier si critère 2 et critère 3 sont présents et,
si c'est le cas alors on peut afficher la ligne où on les trouve sur la feuille 1
 
Bonjour fb

1) Tu veux vérifier ligne par ligne ou toutes les lignes en même temps? 2) Tu veux transcrire 1 seul ligne en A2 oubien toutes les lignes, une fois que la vérification est faite?

ICI TU DIS: Si la colonne h ne contient aucune valeur
Si la colonne I contient une valeur et si la colonne K contient également obligatoirement une valeur
Recherchercher sur Feuil2 la ligne qui contient les mêmes valeurs en colonnes I et K et la copier-coller sur la feuille 1 en A2

ET ICI TU DIS:
criter1 = Range("H2").Value
criter2 = Range("F2").Value
criter3 = Range("I2").Value
Critères de la feuille 1

Encore une fois, si vraiment tu veux être claire. Fait un classeur avec le résultat que tu veux obtenir, sinon on vas y passer 1 mois sans se comprendre. C'est bien beau de causer, tu veux encore que je te mette la cuillère dans la bouche???
 
Dernière édition:
Bonjour,

Merci pour vos efforts.

Si je saisie Code1 voici ce que je souhaite voir se produire :
Puisque l'on trouve plusieurs le Code1 en colonne H sur Feuil2
Une boîte devrait alerter l'utilisateur et lui imposer la saisie en I2 et K2 (le critère en H n'étant pas suffisant)

Si je saisie NC13 en i2 et Tx2 en K2 alors il faut renvoyer à partir de H2 sur Feuil1 :
Code1 en h2
NC13 en i2
Txt1 en J2
Tx2 en K2

Voir le fichier joint avec mes explications
 

Pièces jointes

- 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
8
Affichages
238
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
564
Réponses
4
Affichages
229
Réponses
2
Affichages
175
Réponses
4
Affichages
491
Retour