Manager Les Caracteres Speciaux - Forum Excel-Pratique

ForumsExcel - VBAManager les caracteres speciauxManager les caracteres speciauxLe 03/11/2017 à 15:45PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017

TELECHARGEMENTS

Plus de 300 applications Excel sont disponibles gratuitement en téléchargement !

  • Budget, gestion de comptes
  • Gestion commerciale, personnel
  • Plannings, calendriers
  • Etc.
Voir les applications ...

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 bouton

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:25PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017
curulis57 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 bouton

A+

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 bresse

Bonjour,

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 9

pour détecter le caractère esperluette ("&") c'est pareil...

pos = Instr("Galo&in01","&") 'renvoie 5

pour 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 Sub

A+

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/2011

Bonjour,

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/2017

Merci 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/2017
curulis57 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 :

sh1 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 Sub

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:33PPhilaJeune membreMessages11Votes1Excel2013 ENInscrit01/11/2017
galopin01 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:

Mettons que dans la cellule (1,1) j'ai mon caractere a rechercher

Mettons que dans cellule (1,2) j'ai mon texte.

Le 03/11/2017 à 17:43galopin01Passionné d'ExcelMessages9'456Fichiers4Votes1'261Excel2016Tél.28'946Inscrit18/09/2008Lieubourg en bresse

Ben chez moi ça marche !

Le 03/11/2017 à 17:50TThezePassionné d'ExcelMessages4'019Votes572Excel2007/2019Inscrit26/01/2011

Je 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 bresse

Un 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/2011

Je 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 bresse
Theze 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/2011

ACCES 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"
Plus d'informations ...

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 speciaux

Tag » Code Caractère Spéciaux Vba