OVH Cloud OVH Cloud

condition et ARRAY

3 réponses
Avatar
pascal
Bonjour à tous,
Je cherche comment écrire la macro qui me permettrai de tester une valeur
(comprise dans une liste) d'une cellule (Cells(l,1)) et si OK, faire une
modif d'une autre cellue sur la même ligne l (Colonne 15).

J'ai écrit ceci, mais j'ai un pb sur la 3eme ligne ci-dessous:
liste = Array("CM", "titi", "toto")
For l = 2 To 8000
If Cells(l, 1).Value = liste Then
If Cells(l, 15).Value = "453" Then
Cells(l, 15).Value = "360"
Else
If Cells(l, 15).Value = "507,9" Then
Cells(l, 15).Value = "414,90"
Else
End If
End If
Else
End If
Next l

Je suis à l'écoute pour tester vos solutions.
Pascal

3 réponses

Avatar
AV
Je cherche comment écrire la macro qui me permettrai de tester une valeur
(comprise dans une liste) d'une cellule (Cells(l,1)) et si OK,


Sub zzzz()
liste = Array("CM", "titi", "toto")
For l = 2 To 8000
If IsNumeric(Application.Match(Cells(l, 1), liste, 0)) Then
'blablabla.......
End If
Next
End Sub

AV

Avatar
pascal
Génial, merci AV :-)

Et en mettant les valeurs ("CM", "titi", "toto") dans des cellules d'un
autre fichier azerty.xls, comment faire ?
Dans azerty.xls :
Z1 = CM
Z2 = titi
Z3 = toto
Peut être définir un nom qui engloberais Z1;Z2;Z3..

Merci si tu as aussi cette solution...
Pascal



Je cherche comment écrire la macro qui me permettrai de tester une valeur
(comprise dans une liste) d'une cellule (Cells(l,1)) et si OK,


Sub zzzz()
liste = Array("CM", "titi", "toto")
For l = 2 To 8000
If IsNumeric(Application.Match(Cells(l, 1), liste, 0)) Then
'blablabla.......
End If
Next
End Sub

AV






Avatar
AV
Après avoir ouvert le fichier azerty.xls
Dans le classeur actif :
Insertion > Nom > Définir > Nom dans le classeur > "Plage"
fait référence à : avec ta souris tu balayes la plage Z1:Z3 de "Feuil1"
du classeur "azerty"

Ton nom est maintenant défini ( l'écriture du chemin d'accès se fera
seule)

Tu peux te servir du nom défini "Plage"" comme s'il faisait référence à
une plage du classeur actif.
Pour ton problème ça fera :

Sub zzzz()
For l = 2 To 8000
If IsNumeric(Application.Match(Cells(l, 1), [Plage], 0)) Then
'blablabla.......
End If
Next
End Sub

AV