VBA Excel: Changer ASCII en HEX
Résolu/Fermé
Altazari
Messages postés
32
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
26 juillet 2011
-
26 juil. 2011 à 11:27
Altazari Messages postés 32 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 26 juillet 2011 - 26 juil. 2011 à 17:35
Altazari Messages postés 32 Date d'inscription lundi 15 novembre 2010 Statut Membre Dernière intervention 26 juillet 2011 - 26 juil. 2011 à 17:35
Bonjour,
J'aimerais savoir comment convertir une chaîne de caractère en ASCII (qui vient d'Excel) en Hex afin qu'elle s'affiche correctement dans Word, où je l'exporte. Quelqu'un aurait-il une idée? Merci d'avance,
Clio
J'aimerais savoir comment convertir une chaîne de caractère en ASCII (qui vient d'Excel) en Hex afin qu'elle s'affiche correctement dans Word, où je l'exporte. Quelqu'un aurait-il une idée? Merci d'avance,
Clio
A voir également:
- Vba hex
- Hxd hex editor - Télécharger - Gestion de fichiers
- Hex editor - Télécharger - Édition & Programmation
- Hex editor neo - Télécharger - Édition & Programmation
- Excel compter cellule couleur sans vba - Guide
- Cygnus hex editor - Télécharger - Agendas & Calendriers
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
26 juil. 2011 à 11:55
26 juil. 2011 à 11:55
Bonjour,
Vois ici peut être???
Vois ici peut être???
Altazari
Messages postés
32
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
26 juillet 2011
26 juil. 2011 à 14:28
26 juil. 2011 à 14:28
Merci pour cette rapide réponse, ça a aidé!
J'ai un autre soucis: j'aimerais savoir s'il existe une variable qui signifie "n'importe quelle lettre ou nombre".
Voici pourquoi:
J'essaie de repérer dans des string s'il y a des caractères en Hex (les caractères que j'ai transformés juste avant, sous la forme #00# (ex: #21# = !). Les "#" me permettent de les distinguer des simples nombres.
Donc je fais la recherche suivante :
Où les x représentent "n'importe quelle lettre ou nombre".
Je ne sais pas si c'est clair ?
Merci pour votre temps
Clio
J'ai un autre soucis: j'aimerais savoir s'il existe une variable qui signifie "n'importe quelle lettre ou nombre".
Voici pourquoi:
J'essaie de repérer dans des string s'il y a des caractères en Hex (les caractères que j'ai transformés juste avant, sous la forme #00# (ex: #21# = !). Les "#" me permettent de les distinguer des simples nombres.
Donc je fais la recherche suivante :
If strg = "#xx#" Then ... End If
Où les x représentent "n'importe quelle lettre ou nombre".
Je ne sais pas si c'est clair ?
Merci pour votre temps
Clio
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
26 juil. 2011 à 14:57
26 juil. 2011 à 14:57
2 choses :
1- je ne comprends pas ce que tu veux faire exactement... J'essaie de repérer dans des string s'il y a des caractères en Hex (les caractères que j'ai transformés juste avant Si tu viens de les transformer, pourquoi les rechercher???
2- en VBA # est utilisé pour un caractère numérique quelconque. Exemple :
Tester si Strng est composé d'une majuscule et de 3 caractères numériques : sources
1- je ne comprends pas ce que tu veux faire exactement... J'essaie de repérer dans des string s'il y a des caractères en Hex (les caractères que j'ai transformés juste avant Si tu viens de les transformer, pourquoi les rechercher???
2- en VBA # est utilisé pour un caractère numérique quelconque. Exemple :
Tester si Strng est composé d'une majuscule et de 3 caractères numériques : sources
Dim Strng As String Strng = "A320" If Strng Like "[A-Z]###" Then MsgBox "OK" Else MsgBox "Pas Glop" End If
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
Modifié par pijaku le 26/07/2011 à 15:59
Modifié par pijaku le 26/07/2011 à 15:59
Si tu veux savoir si tes deux "x" sont bien des lettres ou des nombres, exemples :
- X1
- 21
- Az
- 2c
etc...
tu peux utiliser les expressions rationnelles. Pour cela, il faut au préalable ajouter à tes références de projet, dans l'éditeur Visual Basic : Menu Outils > Reférences : cocher : Microsoft VBScript Regular Expressions 5.5 (5.5 dépends de votre version d'Excel)
Puis avec ce code, tu pourras tester ton String :
- X1
- 21
- Az
- 2c
etc...
tu peux utiliser les expressions rationnelles. Pour cela, il faut au préalable ajouter à tes références de projet, dans l'éditeur Visual Basic : Menu Outils > Reférences : cocher : Microsoft VBScript Regular Expressions 5.5 (5.5 dépends de votre version d'Excel)
Puis avec ce code, tu pourras tester ton String :
Sub test() Dim reg As New VBScript_RegExp_55.RegExp Dim Texto As String Set reg = New VBScript_RegExp_55.RegExp Texto = "#21#" 'tester également avec : #^2# par exemple... With reg .Pattern = "/#[a-zA-Z_0-9]{2}/#" .Global = True .IgnoreCase = False End With If reg.test(Texto) = True Then MsgBox "Les 2 caractères entre # sont des lettres et/ou des chiffres" Else MsgBox "Vous avez au moins un caractère différent de lettres ou chiffres" End If Set reg = Nothing End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
Modifié par pijaku le 26/07/2011 à 16:03
Modifié par pijaku le 26/07/2011 à 16:03
dans le code ci-dessus, un bug CCM a remplacé les [ /# ] par des liens sous la forme / #. Il convient donc de remplacer les /# qui apparaissent en bleu dans ma réponse par [ /# ] sans les espaces, soit : crochet ouvrant, slash, dièse, crochet fermant...
Altazari
Messages postés
32
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
26 juillet 2011
26 juil. 2011 à 16:28
26 juil. 2011 à 16:28
Ca fonctionne très bien merci, et tu as raison je n'en avais pas besoin ! (Enfin.. c'est toujours bon à savoir :)
J'ai encore un problème si je peux me permettre: tout fonctionne très bien, excepté pour les string plus long (j'obtiens "string parameter too long")
Est-ce que cette erreur est liée à cette fonction: Mid(str, l, 1)
... ou pas ? (mais je ne vois pas d'où ça vient alors)
Voici le schema de mon code:
Est-ce que je sais manipuler un string par morceaux ? Ou définir le contenu de mes variables par d'autres formats ? Ou autre chose ?
Merci beaucoup!
Clio
J'ai encore un problème si je peux me permettre: tout fonctionne très bien, excepté pour les string plus long (j'obtiens "string parameter too long")
Est-ce que cette erreur est liée à cette fonction: Mid(str, l, 1)
... ou pas ? (mais je ne vois pas d'où ça vient alors)
Voici le schema de mon code:
'J'ouvre un document word 'Puis je définis quelques variables... Objectives = Cells(line, 28) Objectives = AscEncode(Objectives) '...J'en change les caractères spéciaux grâce à ma fonction AscEncode qui remplace les caractères spéciaux par des noms, en parcourant le contenu de la cellule (string) lettre par lettre avec, dans une boucle : Letter = Mid(str, l, 1) 'Je copie le contenu modifié de ces variables dans word grâce à une boucle, à des endroits spécifiques For i = 1 to 5 Select Case i Case 1 Text = "addObjectives" Variable = Objectives ... End select Next i 'wrdDoc.Content.Find.Execute findtext:=Text, replacewith:=Variable, Replace:=wdReplaceAll
Est-ce que je sais manipuler un string par morceaux ? Ou définir le contenu de mes variables par d'autres formats ? Ou autre chose ?
Merci beaucoup!
Clio
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
26 juil. 2011 à 16:43
26 juil. 2011 à 16:43
1- tu as donc tant de caractères dans ton String? (bizarre comme question, j'te l'accorde...)
2- tu peux utiliser une variable tableau déclarée en String :
je suppose que ton string "général" est composé de mots, séparés par des espaces (" ")
Fais ce test :
écris, dans la cellule A1 de ton classeur excel :
"J'aime pas les grands strings"
et lance ce test :
2- tu peux utiliser une variable tableau déclarée en String :
je suppose que ton string "général" est composé de mots, séparés par des espaces (" ")
Fais ce test :
écris, dans la cellule A1 de ton classeur excel :
"J'aime pas les grands strings"
et lance ce test :
Sub test() Dim MesStrings() As String Dim Cptr As Long MesStrings = Split(Cells(1, 1), " ") For Cptr = 0 To UBound(MesStrings) MsgBox MesStrings(Cptr) Next End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 758
26 juil. 2011 à 16:47
26 juil. 2011 à 16:47
Et hop, au passage, un p'tit lien utile sur les variables tableaux
Altazari
Messages postés
32
Date d'inscription
lundi 15 novembre 2010
Statut
Membre
Dernière intervention
26 juillet 2011
26 juil. 2011 à 17:35
26 juil. 2011 à 17:35
Cool ! Merci !
Je ne l'ai pas encore intégré à mon code mais ça m'a l'air nickel.
Passe une bonne soirée,
Clio
Je ne l'ai pas encore intégré à mon code mais ça m'a l'air nickel.
Passe une bonne soirée,
Clio