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
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
A voir également:

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
Bonjour,
Vois ici peut être???
0
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
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 :

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
0
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
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
Dim Strng As String
Strng = "A320"
If Strng Like "[A-Z]###" Then 
    MsgBox "OK"
Else
    MsgBox "Pas Glop"
End If
0
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
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 :
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
0
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
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...
0
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
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:

'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
0
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
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 :
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
0
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
0
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
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
0

Discussions similaires