OVH Cloud OVH Cloud

Où est l'erreur?

4 réponses
Avatar
PROTHEAs
Bonjour =E0 tous,


Voil=E0 j'utilise cette macro mais lorsque je l'=E9xecute rien ne se
passe, est apparement var prend la valeur Erreur 2042 en v=E9rifiant
avec une MsgBox.

Public Sub TX()
Dim e As Range, STRTx, STRTx2, Plage As Range, Var As Variant
'On s=E9lectionne la feuille
Sheets("SYNO VD+TV").Select
' Plage =E0 parcourir
Set Plage =3D Range("BL1", Range("BL65536").End(xlUp))
For Each e In Plage
If e <> "" Then
'On r=E9cup=E8re la valeur de e dans STRTx
STRTx =3D e
'On recherrche cette valeur dans la colonne AA de la feuille
AFFECTATION
Var =3D Application.Match(e,
Sheets("AFFECTATIONS").Range("AA:AA"), 0)
If IsNumeric(Var) Then
'On r=E9cup=E8re la valeur correspondante contenu meme ligne mais dans la
colonne V
STRTx2 =3D
Application.Index(Sheets("AFFECTATIONS").Range("V:V"), Var, -5)
'On rempli la cellule BOx (BL + offset de 2 =3D BO)
e.Offset(0, 2) =3D STRTx2
=20
End If
End If
Next e
End Sub

4 réponses

Avatar
Garette
Bonjour,

Var est en erreur si Match (equiv) ne trouve pas la valeur e dans la zone.
Il faut faire un test d'erreur.
Plutot qu'un isnumeric faire un IsError ...
Avatar
PROTHEAs
Salut Garette, merci,

En fait j'ai trouvé. Le problème c'est que les valeurs ne sont pas
des nombres. Pour y remédier j'ajoute une boucle pour tranformer le
format de la colonne et après ça, cela fonctionne...bien.

Si tu as une autre solution je suis preneur!!!

Merci.
Avatar
Garette
Bonsoir,

Si j'ai bien compris ce que tu souhaites faire je propose ceci.
Il faut peut etre faire des reglages d'Offset, je ne sais pas si je colle
les bons trucs aux bons endroits ...

Sub test()
Set MaPlage = Sheets("SYNO VD+TV").Range("BL1:" & Sheets("SYNO VD+TV"). _
Range("BL65536").End(xlUp).Address)

For Each e In MaPlage
For Each x In Sheets("AFFECTATIONS").Range("AA1:" &
Sheets("AFFECTATIONS"). _
Range("AA65536").End(xlUp).Address)
If e = x Then e.Offset(0, 2).Value = x.Offset(0, -5).Value
Next
Next
End Sub

ou

Sub test2()
With Sheets("SYNO VD+TV")
Set MaPlage = .Range("BL1:" & .Range("BL65536").End(xlUp).Address)
End With
With Sheets("AFFECTATIONS")
For Each e In MaPlage
For Each x In .Range("AA1:" & .Range("AA65536").End(xlUp).Address)
If e = x Then e.Offset(0, 2).Value = x.Offset(0, -5).Value
Next
Next
End With
End Sub
Avatar
PROTHEAs
Ok garette, merci.