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 ascii - Guide
- Aller à la ligne dans une cellule excel - Guide
- Caractères spéciaux - 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.