Manager Les Caracteres Speciaux - Forum Excel-Pratique
Maybe your like
TELECHARGEMENTS
Plus de 300 applications Excel sont disponibles gratuitement en téléchargement !
- Budget, gestion de comptes
- Gestion commerciale, personnel
- Plannings, calendriers
- Etc.
Bonjour,
J'ai un caractere dans une cellule Excel, que je recupere dans la variable "char1".
J'ai un texte dans une autre cellule que je recupere dans la variable "text".
J'ai besoin de recuperer la position de la premiere occurence du caractere dans le texte.
Pour cela rien de plus simple:
pos1 = InStr(text, char1)Mais cela ne marche pas pour les caracteres speciaux tels que:
- les quotes,
- les chiffres (de 0 a 9)
- le caractere '&' (d'ailleurs au passage je ne sais pas comment il s'appelle en francais ce charactere...)
- ...
Pouvez-vous m'indiquer la marche a suivre pour ces caracteres?
Merci
Le 03/11/2017 à 16:13 CurulisPassionné d'ExcelMessages5'830Votes887Excel2024 FRInscrit04/01/2016EmploiRetraité... enfin!LieuBergilers (B)Salut Phila,
une piste à adapter à ta situation.
' sData = Chr(Asc(Target)) MsgBox InStr(Cells(1, 1), sData) 'Si ton problème est résolu, n'oublie pas de marquer les posts qui ont permis de résoudre le problème à l'aide du boutonA+
Á défaut d'un fichier réaliste illustrant votre demande de façon pertinente, ayez la bonté de nous procurer une boule de cristal !Curulis Quest et VBA, même délice : la foire aux neurones !Le 03/11/2017 à 16:25PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017curulis57 a écrit :Salut Phila,
une piste à adapter à ta situation.
' sData = Chr(Asc(Target)) MsgBox InStr(Cells(1, 1), sData) 'Si ton problème est résolu, n'oublie pas de marquer les posts qui ont permis de résoudre le problème à l'aide du boutonA+
Merci pour ton retour, je l'ai adapte, mais ca ne fonctionne toujours pas pour ces carcateres speciaux
char1 = Chr(Asc(Cells(1,1))) pos1 = InStr(text, char1)Le 03/11/2017 à 16:31galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresseBonjour,
Il vaut mieux éviter de nommer des variables selon des noms d'objets, de propriétés ou de fonctions VBA
Ainsi "mot" ou "chaine" remplacerai avantageusement "text".
les caractères numériques se traitent comme les caractères alpha (avec des "")
pos = Instr("Galopin01","1") 'renvoie 9pour détecter le caractère esperluette ("&") c'est pareil...
pos = Instr("Galo&in01","&") 'renvoie 5pour les caractères vraiment spéciaux comme " ou ' on utilise la table des caractère ASCII
" = Chr(34)
si la cellule A1 contient dsqfqsdf"dsfsd
cette macro renvoie 9
Sub test() mot = [A1] MsgBox InStr(mot, Chr(34)) End SubA+
Le 03/11/2017 à 16:33 CurulisPassionné d'ExcelMessages5'830Votes887Excel2024 FRInscrit04/01/2016EmploiRetraité... enfin!LieuBergilers (B)Oui, forcément!
sData = Chr(Asc(Target))sData = le caractère que tu recherches et Target = la cellule où tu écris le caractère recherché.
iPos = InStr(Cells(1, 1), sData)où Cells(1, 1) est ta cellule-cible (je ne sais pas où elle se trouve, moi, hein!) dans laquelle tu dois recherche la position (iPos) de ton caractère.
Ça va aller!
A+
Á défaut d'un fichier réaliste illustrant votre demande de façon pertinente, ayez la bonté de nous procurer une boule de cristal !Curulis Quest et VBA, même délice : la foire aux neurones !Le 03/11/2017 à 16:43TThezePassionné d'ExcelMessages4'019Votes572Excel2007/2019Inscrit26/01/2011Bonjour,
Une piste :
Sub Test()
Dim text As String
'Texte dans la cellule A1 :
'Ceci est un "test" de positionnement de caractère ! Rechercher une esperluette & et une apostrophe' puis un premier chiffre 9 et un second 0
text = Range("A1").Value
'position du 1er guillemet
MsgBox InStr(text, """") '13
'position de l'esperluette
MsgBox InStr(text, "&") '80
'position de l'apostrophe
MsgBox InStr(text, "'") '99
'position du chiffre 9
MsgBox InStr(text, 9) '125
'position du chiffre 0
MsgBox InStr(text, 0) '140
End Sub
Oups oubli balise CODE !
Sub Test() Dim text As String 'Texte dans la cellule A1 : 'Ceci est un "test" de positionnement de caractère ! Rechercher une esperluette & et une apostrophe' puis un premier chiffre 9 et un second 0 text = Range("A1").Value 'position du 1er guillemet MsgBox InStr(text, """") '13 'position de l'esperluette MsgBox InStr(text, "&") '80 'position de l'apostrophe MsgBox InStr(text, "'") '99 'position du chiffre 9 MsgBox InStr(text, 9) '125 'position du chiffre 0 MsgBox InStr(text, 0) '140 End SubIl vaut mieux un qui sait que cent qui cherchent Ce forum étant un lieu de partage, je n'accepte pas les messages privés !Le 03/11/2017 à 16:50PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017Merci pour ces retours.!
Au fait au vu des reponses, je crois que je n'ai pas ete assez clair.
Mettons que dans la cellule (1,1) j'ai mon caractere a rechercher
Mettons que dans cellule (1,2) j'ai mon texte.
Je veux indiquer sur la Cells(1,3) la position du caracatere dans le texte, donc je fais ca:
char1 = Cells(1,1) mot = Cells(1,2) Char(1,3) = Instr(char1, mot)Ceci fonctionne excepte pour les caracteres speciaux que j'ai evoque.
Mais je ne sais pas a priori ce qui se trouve dans la cellule (1,1), ca peut etre une esperluette (merci pour le terme ) ou un autre caractere special, ou un caractere normal, donc je ne peux pas faire quelque chose comme ca:
InStr(text, "&")J'ai essaye ca:
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Char(1,3) = Instr(chr(char1), mot)Mais ca ne marche pas non plus pour les caracteres speciaux
Le 03/11/2017 à 16:58 CurulisPassionné d'ExcelMessages5'830Votes887Excel2024 FRInscrit04/01/2016EmploiRetraité... enfin!LieuBergilers (B)Salut Phila,
Bonjour l'équipe,
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Char(1,3) = Instr(chr(char1), mot)tu n'étais pas loin...
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Cells(1,3) = Instr(mot, chr(char1))A+
Á défaut d'un fichier réaliste illustrant votre demande de façon pertinente, ayez la bonté de nous procurer une boule de cristal !Curulis Quest et VBA, même délice : la foire aux neurones !Le 03/11/2017 à 17:10PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017curulis57 a écrit :Salut Phila,
Bonjour l'équipe,
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Char(1,3) = Instr(chr(char1), mot)tu n'étais pas loin...
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Cells(1,3) = Instr(mot, chr(char1))A+
Pardon effectivement j'ai pas fait un copie colle de mon programme, et j'ai fait des erreurs de recopie.
Ce que j'ai fait est bien ceci:
char1 = Asc(Cells(1,1)) mot = Cells(1,2) Cells(1,3) = Instr(mot, chr(char1))Mais ca ne marche pas plus
Le 03/11/2017 à 17:25galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresseÇa ne marche pas n'est pas une réponse admise : Qui avait-il dans les 2 cellules ? Que se passe-t-il ?
Tu as le droit de rejouer :
Le 03/11/2017 à 17:28 CurulisPassionné d'ExcelMessages5'830Votes887Excel2024 FRInscrit04/01/2016EmploiRetraité... enfin!LieuBergilers (B) COURS EXCEL / VBA
Plusieurs cours gratuits sont mis à disposition sur le site Excel-Pratique :
- Cours Excel
- Cours VBA
- Cours VBA avancé
Les 2 premiers cours démarrent de zéro. Ils peuvent donc être suivis par des personnes qui débutent avec Excel (ou VBA).
Rira bien celui qui rira le dernier!
Private Sub Worksheet_Change(ByVal Target As Range) ' Application.EnableEvents = False ' If Not Intersect(Target, Range("A1")) Is Nothing Then char1 = Asc(Cells(1, 1)) mot = Cells(1, 2) Cells(1, 3) = InStr(mot, Chr(char1)) End If ' Application.EnableEvents = True ' End SubA+
Á défaut d'un fichier réaliste illustrant votre demande de façon pertinente, ayez la bonté de nous procurer une boule de cristal !Curulis Quest et VBA, même délice : la foire aux neurones !Le 03/11/2017 à 17:33PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017galopin01 a écrit :Ça ne marche pas n'est pas une réponse admise : Qui avait-il dans les 2 cellules ? Que se passe-t-il ?
Tu as le droit de rejouer :
Lol,
c'est ce que j'expliquais sur mon message precedent:
Le 03/11/2017 à 17:43galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresseMettons que dans la cellule (1,1) j'ai mon caractere a rechercher
Mettons que dans cellule (1,2) j'ai mon texte.
Ben chez moi ça marche !
Le 03/11/2017 à 17:50TThezePassionné d'ExcelMessages4'019Votes572Excel2007/2019Inscrit26/01/2011Je ne comprend pas où est le problème ???
Voici un classeur avec une fonction perso et la fonction Cherche() d'Excel. L'apostrophe doit être doublée dans la cellule sinon, pour le reste ça fonctionne très bien !
18recherche-caractere.xlsm (15.96 Ko) Il vaut mieux un qui sait que cent qui cherchent Ce forum étant un lieu de partage, je n'accepte pas les messages privés !Le 03/11/2017 à 17:53galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresseUn autre petit classeur joint pour s'éclaircir les idées ?
16phila.xlsm (16.79 Ko) Le 03/11/2017 à 17:58 CurulisPassionné d'ExcelMessages5'830Votes887Excel2024 FRInscrit04/01/2016EmploiRetraité... enfin!LieuBergilers (B)Salut l'équipe,
perso, j'ai assez joué!
Bon amusement!
A+
Á défaut d'un fichier réaliste illustrant votre demande de façon pertinente, ayez la bonté de nous procurer une boule de cristal !Curulis Quest et VBA, même délice : la foire aux neurones !Le 03/11/2017 à 18:16TThezePassionné d'ExcelMessages4'019Votes572Excel2007/2019Inscrit26/01/2011Je re-poste mon classeur avec le texte de galopin01, il y a juste une erreur avec la fonction Cherche d'Excel sur le caractère étoile (*) et on voit bien, que InStr() retourne bien la bonne position sans l'utilisation d'artifice comme Chr() ou autre !
16recherche-caractere-version2.xlsm (16.35 Ko) Il vaut mieux un qui sait que cent qui cherchent Ce forum étant un lieu de partage, je n'accepte pas les messages privés !Le 03/11/2017 à 19:12galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresseTheze a écrit :sans l'utilisation d'artifice comme Chr() ou autre Asc() !
Nous sommes bien d'accord : Je les ai juste laissé parce qu'ils étaient vendus avec le Copier/Collé...
Cependant dans certains (autres cas) macros l'usage de Chr() peut s'avérer décisifs pour le maniements de string.
A+
Le 03/11/2017 à 23:33TThezePassionné d'ExcelMessages4'019Votes572Excel2007/2019Inscrit26/01/2011ACCES PREMIUM
Soutenez le site en devenant membre Premium et profitez de plusieurs options exclusives :
- Navigation sans publicités
- Option "No Tracking"
- Option "Mode Incognito"
- Option "Dark Mode"
Hello galopin01,
Cependant dans certains (autres cas) macros l'usage de Chr() peut s'avérer décisifs pour le maniements de string
Tout à fait d'accord avec toi mais dans ce cas, je voulais juste dire que ça fonctionne très bien sans utiliser d'autres fonctions et c'est pour cette raison que je ne comprend pas ou est le problème de Phila ?
Il vaut mieux un qui sait que cent qui cherchent Ce forum étant un lieu de partage, je n'accepte pas les messages privés !Rechercher des sujets similaires à "manager caracteres speciaux"ForumsExcel - VBAManager les caracteres speciauxTag » Code Caractère Spéciaux Vba
-
Chr Function (Visual Basic For Applications) - Microsoft Docs
-
Special Characters In Code - Visual Basic - Microsoft Docs
-
Insérer Des Caractères Spéciaux Avec Excel VBA - ExcelCorpo
-
Insérer Caractère Spécial Dans Le Code VBA
-
(vba) Caractère Spécial
-
Excel-VBA: Caractères Spéciaux - YouTube
-
Sendkeys Et Caractères Spéciaux - CodeS-SourceS
-
Suppression Des Caractères Spéciaux VBA Excel - AskCodez
-
VBA: Assainir Lien URL Des Caractères Spéciaux | Excel
-
Fonction ChrW [VBA] - LibreOffice Help
-
Excel VBA Supprimer Des Caractères Unicode Dans Une Chaîne De ...
-
Caractère Spécial - Visual Basic - CodeS-SourceS
-
Suppression De Caractères Spéciaux VBA Excel
-
(vba) Caractère Spécial : Forum Excel - Generation-NT