Trouver certains caractères dans une cellule
Résolu
Planturge
-
Planturge -
Planturge -
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:
- Trouver certains caractères dans une cellule
- Trouver adresse mac - Guide
- Caractères spéciaux - Guide
- Aller à la ligne dans une cellule excel - Guide
- Caractères ascii - Guide
- Excel cellule couleur si condition texte - Guide
2 réponses
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.
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.
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
Si tu veux faire plusieurs If en un seul, avec des Or, il faut faire :
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 :
Cordialement.
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.