Bonjour tout le monde,
Je viens vous appeler au secours concernant la fonction match en VBA.
L'objectif est de restituer la valeur de la cellule renvoyée dans la plage destination. Celà fonctionne pour d'autre champs dans le même fichier, même manip. Mais pour l'un d'entre eux je'y parviens pas.
Je joins le fichier en PJ. L'objectif est de renvoyé la valeur de la colonne Décision" de l'onglet sélection vers la colonne info 1 (L) de l'onglet synth, si le nom correspond.
J'ai rendu le fichier neutre en intitulés car c'est pour du scolaire et confidentiel.
Lorsque j'utilise le code ci dessous, pas d'anomalie, mais rien ne se passe...
J'ai vérifié, ce n'est pas à cause de la reconnaissance de correspondance (enfin jen e pense pas), car cela fonctionne avec la formule Equiv qui correspond à Match.
Pouvez vous m'aider svp ?
Sub info()
Dim Selection As Worksheet
Dim Synth As Worksheet
Dim Sreinfo1 As Range
Dim Destinfo1 As Range
Dim cel As Range
Dim Ligne As Range
Set Selection = Worksheets("Selection")
Set Synth = Worksheets("Synth")
'défini les plages
With Selection
Set Sreinfo1 = .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
With Synth
Set Destinfo1 = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp))
End With
'parcour la plage de la feuille de destination
For Each cel In Destinfo1
'gestion de l'erreur de la valeur non trouvé
On Error Resume Next
Ligne = Application.WorksheetFunction.Match(cel.Value, Sreinfo1, 0) + 3 'rajoute 3 car départ de plage en ligne 4
'si pas d'erreur, récupère les valeurs en colonnes E:G et les inscrit en colonne AN:AP
If Err.Number = 0 Then
cel.Offset(, 9).Value = Selection.Cells(Ligne, 1).Offset(, 2).Value
End If
Next cel
End Sub
Je viens vous appeler au secours concernant la fonction match en VBA.
L'objectif est de restituer la valeur de la cellule renvoyée dans la plage destination. Celà fonctionne pour d'autre champs dans le même fichier, même manip. Mais pour l'un d'entre eux je'y parviens pas.
Je joins le fichier en PJ. L'objectif est de renvoyé la valeur de la colonne Décision" de l'onglet sélection vers la colonne info 1 (L) de l'onglet synth, si le nom correspond.
J'ai rendu le fichier neutre en intitulés car c'est pour du scolaire et confidentiel.
Lorsque j'utilise le code ci dessous, pas d'anomalie, mais rien ne se passe...
J'ai vérifié, ce n'est pas à cause de la reconnaissance de correspondance (enfin jen e pense pas), car cela fonctionne avec la formule Equiv qui correspond à Match.
Pouvez vous m'aider svp ?
Sub info()
Dim Selection As Worksheet
Dim Synth As Worksheet
Dim Sreinfo1 As Range
Dim Destinfo1 As Range
Dim cel As Range
Dim Ligne As Range
Set Selection = Worksheets("Selection")
Set Synth = Worksheets("Synth")
'défini les plages
With Selection
Set Sreinfo1 = .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
With Synth
Set Destinfo1 = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp))
End With
'parcour la plage de la feuille de destination
For Each cel In Destinfo1
'gestion de l'erreur de la valeur non trouvé
On Error Resume Next
Ligne = Application.WorksheetFunction.Match(cel.Value, Sreinfo1, 0) + 3 'rajoute 3 car départ de plage en ligne 4
'si pas d'erreur, récupère les valeurs en colonnes E:G et les inscrit en colonne AN:AP
If Err.Number = 0 Then
cel.Offset(, 9).Value = Selection.Cells(Ligne, 1).Offset(, 2).Value
End If
Next cel
End Sub