Test sur contenu de texte

Résolu
MP202013 Messages postés 8 Statut Membre -  
MP202013 Messages postés 8 Statut Membre -
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

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. MP202013 Messages postés 8 Statut Membre
       
      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
  2. scinarf Messages postés 1183 Statut Membre 294
     
    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