Trouver certains caractères dans une cellule

Résolu/Fermé
Planturge - 28 févr. 2012 à 04:22
 Planturge - 1 mars 2012 à 10:49
Bonjour, 
Pardonnez moi pour mes questions idiotes mais je débute avec VBA. Merci d'être indulgent. J'ai cherché des heures et des heures avant d'oser poser une question, mais voila, je me résouts à demander de l'aide.

J'ai deux questions:
1) Dans un select case, peut on entrer plusieurs valeurs dans le même case?

Par exemple, j'ai dû faire:

Case "Paris"
          instructions
Case "Nice"
          instructions


Seulement, mes instructions sont exactement les mêmes.
Je voudrais donc faire

Case "Nice" or "Paris"
Afin de simplifier mon code.
Est ce possible?

2) Je cherche dans une colonne définie le lieu ou des professionnels  travaillent.
   Hors, dans les cellules de cette colonnes sont inscrits le lieu et la société.
   Mon programme ne fonctionne que si ma cellule ne contient que le mot "Paris" par exemple.
   Si la cellule contient "Société générale, Paris", alors la cellule n'est pas détectée dans mon Select Case.

  Voici mon code:

Cells.Find("Lieu").Select
l = Selection.Column
   For j = 4 To NbrLign
             Select Case Cells(j, l)
                     Case "Paris"
                        instructions
                     Case "Paris"
                        instructions
              End Select
    Next



Comment puis-je parvenir à mes fins?
J'ai trouvé sur internet un morceau de code mais je ne parviens pas à l'adapter. De plus, il contient un if... then.
Cela me semble donc incompatible avec mon Select case.


 If Not InStr(1, Cells(j, l).Value, "Paris") > 0

Exit Sub

J'espère avoir été clair. Je vous remercie pour votre aide.
A bientôt.
planturge


A voir également:

2 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
28 févr. 2012 à 09:29
Bonjour,

1°) Oui c'est possible de regrouper dans le Case comme tu voulais le faire

2°) Vu que tu fais une recherche partielle de texte dans la cellule, il va falloir passer par If... Then. Le Select Case ne fonctionne pas dans le cas de recherche partielle.

Cordialement.
0
Bonjour chossette.
Merci pour tes réponses.

Il me reste cependant quelques problèmes:
En utilisant if then, mon code marche et fait ce que je veux. Par contre, je me retrouve avec près de 50 boucle if then incrémentées et mon programme est par conséquent très long.
et mon code n'est plus vraiment clair.

j'utilise:

    Else
        If Cells(j, l) Like "*" & "Monaco" & "*" Then
        Instructions
    Else
        If Cells(j, l) Like "*" & "Ukraine" & "*" Then
   end if
end if 
....

Y a t'il une méthode plus simple à mettre en place?


Aussi, je me doutais bien que le Case "a" Or "b" devait marcher.
Pourtant ce n'est pas le cas.
J'ai essayé de faire la même chose avec mes if:
Meme résultats.
J'ai essayé différents codages:

If Cells(j, l) Like "*" & "Monaco" & "*" Or "*Ukraine*" Then
If Cells(j, l) Like "*" & "Monaco" & "*"  Or Like "*" & "Ukraine" & "*"Then
If Cells(j, l) Like "*" & "Monaco" & "*"  Or Cells(j, l) Like "*" & "Ukraine" & "*"Then

Rien n'a marché. 
Pouvez vous m'aider s'il vous plait?

Encore une dernière chose: dans mon fichier, j'ai des Monaco, MONACO, Monàco...
Est- il possible d'utiliser un code qui me permet de tous les repérer en même temps (toujours au milieu d'une chaine de caractès plus importante de type:
"Sg monaco"

Merci infiniment pour votre aide.
Cordialement.
Planturge




0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
Modifié par chossette9 le 28/02/2012 à 17:35
Si tu veux faire plusieurs If en un seul, avec des Or, il faut faire :
If Cells(j, l) Like "*" & "Monaco" & "*" Or  Cells(j,l) Like"*Ukraine*" Or...

Tu dois répéter le test (si a = b ou a = c ou a = d et ainsi de suite).

Si tu as plusieurs écritures différentes, le mieux est de tout mettre en majuscules/minusucles. Du coup, il te faut utiliser les fonctions UBound() ou LBound(). Ce qui donnerait :
If (UBound(Cells(j,l)) Like "*"& "MONACO & "*" Or...
ou
If (LBound(Cells(j,l)) Like "*"& "monaco & "*" Or...

Cordialement.
0
Je suppose que vous vouliez dire UCase et LCase.
Merci en tout cas. Tout fonctionne.
Cordialement.
0