VBA Excel: Changer ASCII en HEX
Résolu
Altazari
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
Altazari Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Altazari Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
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
- Hex workshop - Télécharger - Organisation
- Hex editor neo - Télécharger - Édition & Programmation
- Hxd hex editor - Télécharger - Gestion de fichiers
- Hex edit - Télécharger - Édition & Programmation
- Excel compter cellule couleur sans vba - Guide
3 réponses
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
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
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
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
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