Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème dans macro recherche multicritères et listes de validation multicritères

3 réponses
Avatar
Yoyo
Bonjour

Bonjour avec l'aide du forum g cr=E9er une macro dans une feuille qui
recherche les valeur d'un tableau avec plusieurs crit=E8re qui sont
saisie dans des liste de validation en E,F,G,H
Les valeurs trouv=E9es sont copi=E9es dans les colonnes KLM
Le r=E9sultat en K est trouv=E9 gr=E2ce au crit=E8re E et F
L E,FetG
M E,F ;G ;H

Il faut aussi savoir que g nomm=E9e les colonne K,L,M et elles sont
respectivement pour FGH sont les valeur de mes liste de validation.

Mon probl=E8me c'est que ma macro copie bien les valeurs que
j'attend en colonne K mais rien ne se passe pour les deux autre
recherches
J'ai poser un point d'arret pour voir si on entr=E9 dans ma boucle
mais apparement non.
Je n'arrive pas a d=E9boguer en esp=E9rant que vous pourrez m'aider
je vous transmet mon code.

' Copie les valeur d'un tableau suivant des crit=E8res
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j, k, l
j =3D 1
k =3D 1
l =3D 1

If (Target.Column <> 5) Then Exit Sub
'Copie dans la colonne Pays les valeur correspondant
au crit=E8re
[K2:K65535].Select
Selection.ClearContents

For i =3D 2 To [A65536].End(xlUp).Row
If Cells(i, 1) =3D Target.Offset(0, 0).Value Then
j =3D j + 1
Range("K" & j) =3D Range("B" & i).Value
End If
Next

If (Target.Column <> 6) Then Exit Sub
[L2:M65535].Select
Selection.ClearContents

'Copie dans la colonne name les valeur correspondant au
crit=E8re
For i =3D 1 To [B65536].End(xlUp).Row
If (Cells(i, 2) =3D Target.Offset(0, 0).Value And
Cells(i, 1) =3D ActiveCell.Offset(0, -1).Value) Then
k =3D k + 1
Range("L" & k) =3D Range("C" & i).Value
End If

Next

If (Target.Column <> 7) Then Exit Sub


[M2:M65535].Select
Selection.ClearContents

'Copie dans la colonne sold to les valeur
correspondant au crit=E8re
For i =3D 1 To [C65536].End(xlUp).Row
If (Cells(i, 3) =3D Target.Offset(0, 0).Value And
Cells(i, 2) =3D Target.Offset(0, -1).Value And Cells(i, 1) =3D
Target.Offset(0, -2).Value) Then
l =3D l + 1
Range("M" & l) =3D Range("D" & i).Value
End If
Next
=20
End Sub
=20
Merci d'avance Yohann

3 réponses

Avatar
michdenis
Bonjour Yoyo,

essaie ceci : (pas testé ...)

'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, C As Range
Dim j, k, l

j = 1
k = 1
l = 1

Set Rg = Intersect(Target, Range("E:G"))

If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
If C.Column = 5 Then
'Copie dans la colonne Pays les valeur
'correspondant au critère
[K2:K65535].ClearContents
For i = 2 To [A65536].End(xlUp).Row
If Cells(i, 1) = C.Offset(0, 0).Value Then
j = j + 1
Range("K" & j) = Range("B" & i).Value
End If
Next

ElseIf C.Column = 6 Then
[L2:M65535].ClearContents
'Copie dans la colonne name les valeur
'correspondant au critère

For i = 1 To [B65536].End(xlUp).Row
If (Cells(i, 2) = C.Offset(0, 0).Value _
And Cells(i, 1) = ActiveCell.Offset(0, -1).Value) Then
k = k + 1
Range("L" & k) = Range("C" & i).Value
End If
Next

ElseIf C.Column = 7 Then
[M2:M65535].ClearContents
'Copie dans la colonne sold to les valeur
'correspondant au critère
For i = 1 To [C65536].End(xlUp).Row
If (Cells(i, 3) = C.Offset(0, 0).Value _
And Cells(i, 2) = C.Offset(0, -1).Value _
And Cells(i, 1) = C.Offset(0, -2).Value) Then
l = l + 1
Range("M" & l) = Range("D" & i).Value
End If
Next
End If
Next
Application.EnableEvents = True
End If

End Sub
'-------------------------------------------


Salutations!



"Yoyo" a écrit dans le message de news:
Bonjour

Bonjour avec l'aide du forum g créer une macro dans une feuille qui
recherche les valeur d'un tableau avec plusieurs critère qui sont
saisie dans des liste de validation en E,F,G,H
Les valeurs trouvées sont copiées dans les colonnes KLM
Le résultat en K est trouvé grâce au critère E et F
L E,FetG
M E,F ;G ;H

Il faut aussi savoir que g nommée les colonne K,L,M et elles sont
respectivement pour FGH sont les valeur de mes liste de validation.

Mon problème c'est que ma macro copie bien les valeurs que
j'attend en colonne K mais rien ne se passe pour les deux autre
recherches
J'ai poser un point d'arret pour voir si on entré dans ma boucle
mais apparement non.
Je n'arrive pas a déboguer en espérant que vous pourrez m'aider
je vous transmet mon code.

' Copie les valeur d'un tableau suivant des critères
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j, k, l
j = 1
k = 1
l = 1

If (Target.Column <> 5) Then Exit Sub
'Copie dans la colonne Pays les valeur correspondant
au critère
[K2:K65535].Select
Selection.ClearContents

For i = 2 To [A65536].End(xlUp).Row
If Cells(i, 1) = Target.Offset(0, 0).Value Then
j = j + 1
Range("K" & j) = Range("B" & i).Value
End If
Next

If (Target.Column <> 6) Then Exit Sub
[L2:M65535].Select
Selection.ClearContents

'Copie dans la colonne name les valeur correspondant au
critère
For i = 1 To [B65536].End(xlUp).Row
If (Cells(i, 2) = Target.Offset(0, 0).Value And
Cells(i, 1) = ActiveCell.Offset(0, -1).Value) Then
k = k + 1
Range("L" & k) = Range("C" & i).Value
End If

Next

If (Target.Column <> 7) Then Exit Sub


[M2:M65535].Select
Selection.ClearContents

'Copie dans la colonne sold to les valeur
correspondant au critère
For i = 1 To [C65536].End(xlUp).Row
If (Cells(i, 3) = Target.Offset(0, 0).Value And
Cells(i, 2) = Target.Offset(0, -1).Value And Cells(i, 1) Target.Offset(0, -2).Value) Then
l = l + 1
Range("M" & l) = Range("D" & i).Value
End If
Next

End Sub

Merci d'avance Yohann
Avatar
Elliac
Bonjour,

Essaye :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim j, k, l
j = 1
k = 1
l = 1

If Target.Column =5 Then
'Copie dans la colonne Pays les valeur correspondant au
critère
[K2:K65535].Select
Selection.ClearContents

For i = 2 To [A65536].End(xlUp).Row
If Cells(i, 1) = Target.Offset(0, 0).Value Then
j = j + 1
Range("K" & j) = Range("B" & i).Value
End If
Next

ElseIf Target.Column =6 Then
[L2:M65535].Select
Selection.ClearContents

'Copie dans la colonne name les valeur correspondant au
critère
For i = 1 To [B65536].End(xlUp).Row
If (Cells(i, 2) = Target.Offset(0, 0).Value And
Cells(i, 1) = ActiveCell.Offset(0, -1).Value) Then
k = k + 1
Range("L" & k) = Range("C" & i).Value
End If

Next

ElseIf Target.Column =7 Then


[M2:M65535].Select
Selection.ClearContents

'Copie dans la colonne sold to les valeur
correspondant au critère
For i = 1 To [C65536].End(xlUp).Row
If (Cells(i, 3) = Target.Offset(0, 0).Value And
Cells(i, 2) = Target.Offset(0, -1).Value And Cells(i, 1) Target.Offset(0, -2).Value) Then
l = l + 1
Range("M" & l) = Range("D" & i).Value
End If
Next
End If
End Sub


"Yoyo" wrote:

Bonjour

Bonjour avec l'aide du forum g créer une macro dans une feuille qui
recherche les valeur d'un tableau avec plusieurs critère qui sont
saisie dans des liste de validation en E,F,G,H
Les valeurs trouvées sont copiées dans les colonnes KLM
Le résultat en K est trouvé grâce au critère E et F
L E,FetG
M E,F ;G ;H

Il faut aussi savoir que g nommée les colonne K,L,M et elles sont
respectivement pour FGH sont les valeur de mes liste de validation.

Mon problème c'est que ma macro copie bien les valeurs que
j'attend en colonne K mais rien ne se passe pour les deux autre
recherches
J'ai poser un point d'arret pour voir si on entré dans ma boucle
mais apparement non.
Je n'arrive pas a déboguer en espérant que vous pourrez m'aider
je vous transmet mon code.

' Copie les valeur d'un tableau suivant des critères
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j, k, l
j = 1
k = 1
l = 1

If (Target.Column <> 5) Then Exit Sub
'Copie dans la colonne Pays les valeur correspondant
au critère
[K2:K65535].Select
Selection.ClearContents

For i = 2 To [A65536].End(xlUp).Row
If Cells(i, 1) = Target.Offset(0, 0).Value Then
j = j + 1
Range("K" & j) = Range("B" & i).Value
End If
Next

If (Target.Column <> 6) Then Exit Sub
[L2:M65535].Select
Selection.ClearContents

'Copie dans la colonne name les valeur correspondant au
critère
For i = 1 To [B65536].End(xlUp).Row
If (Cells(i, 2) = Target.Offset(0, 0).Value And
Cells(i, 1) = ActiveCell.Offset(0, -1).Value) Then
k = k + 1
Range("L" & k) = Range("C" & i).Value
End If

Next

If (Target.Column <> 7) Then Exit Sub


[M2:M65535].Select
Selection.ClearContents

'Copie dans la colonne sold to les valeur
correspondant au critère
For i = 1 To [C65536].End(xlUp).Row
If (Cells(i, 3) = Target.Offset(0, 0).Value And
Cells(i, 2) = Target.Offset(0, -1).Value And Cells(i, 1) > Target.Offset(0, -2).Value) Then
l = l + 1
Range("M" & l) = Range("D" & i).Value
End If
Next

End Sub

Merci d'avance Yohann




Avatar
Yoyo
Merci a tous les deux pour votre réponse la seconde fonctionne je n'ai
pas essayé celle de ELLIAC . Par contre j'ai un autre soucis lorsque
je copie le code et la feuille de calcul pour le mettre dans une autre
feuille ce la ne fonctionne pas. Est ce une histoire de déclaration ou
d'initialisation à faire.

Merci beaucoup Yohann