Test sur contenu de texte

Résolu/Fermé
MP202013 Messages postés 8 Date d'inscription vendredi 15 février 2013 Statut Membre Dernière intervention 5 janvier 2015 - 20 févr. 2013 à 13:46
MP202013 Messages postés 8 Date d'inscription vendredi 15 février 2013 Statut Membre Dernière intervention 5 janvier 2015 - 21 févr. 2013 à 10:29
Bonjour, Je souhaite tester dans une boucle d'une macro que j'ai créé.
Le test doit donner ajouter 1 a la variable indicecodeliste si le texte Code sous la forme "1SPOLPH" (ce code viens d'une cellule A indicecodematrice de la feuille matrice) contient SPO et LPH (ces valeurs viennent de deux cellules Z8 et Z12 de la feuille FicheEspace) et qui ne fait rien dans le cas inverse.
Voici le code que j'ai entré

If
Worksheets("Matrice").Range("A" & indicecodematrice).Value Like Worksheets("FicheEspace").Range("Z8").Value
And Worksheets("Matrice").Range("A" & indicecodematrice).Value Like Worksheets("FicheEspace").Range("Z12").Value
Then
Worksheets("FicheEspace").Range("O" & indicecodeliste).Value = Worksheets("Matrice").Range("A" & indicecodematrice).Value

indicecodeliste = indicecodeliste + 1

Else
End If

Ce code ne fait rien

Merci d'avance pour vos réponse


A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 févr. 2013 à 17:18
Bonjour

Essaies ceci

With Worksheets("FicheEspace")
     Test1 = .Range("Z8")
     Test2 = .Range("Z12")
     Ref = Sheets("matrice").Cells(indicecodematrice, "A")
     
     If InStr(1, Ref, Test1) * InStr(1, Ref, Test2) Then
          .Cells(indicecodematrice, "O") = Ref
          lndicecodeliste = indicecodematrice + 1
     End If


mais si Tu boucles sur les indices sur un tableau important, ta procédure d'être chronophage (mot à la mode pour frimer)
1
MP202013 Messages postés 8 Date d'inscription vendredi 15 février 2013 Statut Membre Dernière intervention 5 janvier 2015
21 févr. 2013 à 10:29
Après une petite modification de nom ca donne le code suivant :

With Worksheets("FicheEspace")
Test1 = .Range("Y8")
Test2 = .Range("Y12")
Ref = Sheets("Matrice").Cells(indicecodematrice, "A")

If InStr(1, Ref, Test1) * InStr(1, Ref, Test2) Then
.Cells(indicecodeliste, "O") = Ref
indicecodeliste = indicecodeliste + 1
End If
End With


Ca marche super!
Merci beaucoup!
0
scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
20 févr. 2013 à 13:58
Bonjour,

déjà il y a un truc que j'ai jamais compris, mais peut etre ca vient de moi pourquoi utiliser un Range ("A" & indicecodematrice) alors que un cells(indicecodematrice,1) fais exactement la même chose et on peut le manipuler beaucoup plus facilement.

Ensuite, le problème vient peut être d'un problème de parenthèse comme il y en a pas.

If
((Worksheets("Matrice").Range("A" & indicecodematrice).Value Like Worksheets("FicheEspace").Range("Z8").Value)
And (Worksheets("Matrice").Range("A" & indicecodematrice).Value Like Worksheets("FicheEspace").Range("Z12").Value))
Then

Faut essayer, pas sur que ça solutionne le problème.

Dans ce cas présent, je ne pense pas que le "Else" soit nécessaire sachant qu'aucune instruction ne le compose, peut être essayer de l'enlever.

Sinon ca devrait marcher ... mais defois on trouve juste un tout petit truc qui est mal ecris que l'on ne voit pas
0