Caractères spéciaux
Résolu
Bel_6625
Messages postés
19
Statut
Membre
-
Bel_6625 Messages postés 19 Statut Membre -
Bel_6625 Messages postés 19 Statut Membre -
Bonjour,
J'aurai besoin de vos lumières :)
J'ai crée un dictionnaire VBA afin de prendre en compte plusieurs paramètres dans mon programme. Mais je me suis rendu compte que ce programme ne prenait pas en compte tous les caractères spéciaux de la chaine de caractère.
Exemple: au lieu d'écrire SDLB-Massy comme écrit dans la colonne de la base de données, le programme ne m'affiche que SDLB et il zappe la suite à partir du tiret.
Comment faire pour les prendre en compte ? Y'a t' un code pour ça?
Bien à vous
J'aurai besoin de vos lumières :)
J'ai crée un dictionnaire VBA afin de prendre en compte plusieurs paramètres dans mon programme. Mais je me suis rendu compte que ce programme ne prenait pas en compte tous les caractères spéciaux de la chaine de caractère.
Exemple: au lieu d'écrire SDLB-Massy comme écrit dans la colonne de la base de données, le programme ne m'affiche que SDLB et il zappe la suite à partir du tiret.
Comment faire pour les prendre en compte ? Y'a t' un code pour ça?
Bien à vous
Configuration: Windows / Edge 93.0.961.47
A voir également:
- Caractères spéciaux
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caractères ascii - Guide
- Raccourcis clavier word caractères spéciaux pdf - Guide
6 réponses
Bonjour,
Ne sachant rien du code que tu as réalisé .. ni de la structure de ton fichier .... il nous est impossible de te répondre.
Merci de déposer un fichier d'exemple via cijoint
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Et n'hésites pas à partager ton code directement sur le forum ( en prenant le soins d'utiliser les balises de code => Explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code )
Ne sachant rien du code que tu as réalisé .. ni de la structure de ton fichier .... il nous est impossible de te répondre.
Merci de déposer un fichier d'exemple via cijoint
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Et n'hésites pas à partager ton code directement sur le forum ( en prenant le soins d'utiliser les balises de code => Explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code )
Bonjour,
Ci joint le lien de mon code. Merci d'avance
https://www.cjoint.com/c/KJDnXdZUIYN
<config>Windows / Edge 93.0.961.47</config
Ci joint le lien de mon code. Merci d'avance
https://www.cjoint.com/c/KJDnXdZUIYN
<config>Windows / Edge 93.0.961.47</config
Merci
C'est donc le Key = ... "-" + RM.Cells(LigneRM, 28) qui contient des caractères spéciaux (tirets)
C'est donc le Key = ... "-" + RM.Cells(LigneRM, 28) qui contient des caractères spéciaux (tirets)
For Each Wsname In wslistannee
Set RM = Sheets(Wsname)
NbLigneRM = RM.Cells(Rows.Count, 1).End(xlUp).Row
LigneRM = 2
Do While LigneRM <= NbLigneRM
CodeDep = RM.Cells(LigneRM, 16)
If CodeDep <> "GDI" Then
'création de la concaténation des clés (contraintes)
Key = RM.Cells(LigneRM, 5) + "-" + RM.Cells(LigneRM, 16) + "-" + RM.Cells(LigneRM, 22) + "-" + RM.Cells(LigneRM, 13) + "-" + RM.Cells(LigneRM, 28)
MoisRM = CInt(Right(CStr(RM.Cells(LigneRM, 24).Value), 2))
'Calcul somme annuelle
If dict.Exists(Key) Then
SumAnnee = dict(Key)
SumAnnee(NumWS) = SumAnnee(NumWS) + RM.Cells(LigneRM, 26)
dict(Key) = SumAnnee
'Calcul somme cumulée
If MoisRM <= MoisMax Then
SumAnnee1 = dict1(Key)
SumAnnee1(NumWS) = SumAnnee1(NumWS) + RM.Cells(LigneRM, 26)
dict1(Key) = SumAnnee1
End If
Else
'On remet les années à zéro à chaque fois poour ne pas qu'il ait de cumul de résultat à chaque fois
'que l'on clique sur les boutons
ReDim SumAnnee(1 To 6)
SumAnnee(1) = 0
SumAnnee(2) = 0
SumAnnee(3) = 0
SumAnnee(4) = 0
SumAnnee(5) = 0
SumAnnee(6) = 0
SumAnnee(NumWS) = RM.Cells(LigneRM, 26)
dict(Key) = SumAnnee
ReDim SumAnnee1(1 To 6)
SumAnnee1(1) = 0
SumAnnee1(2) = 0
SumAnnee1(3) = 0
SumAnnee1(4) = 0
SumAnnee1(5) = 0
SumAnnee1(6) = 0
If MoisRM <= MoisMax Then
SumAnnee1(NumWS) = RM.Cells(LigneRM, 26)
End If
dict1(Key) = SumAnnee1
End If
End If
LigneRM = LigneRM + 1
Loop
NumWS = NumWS + 1
Next
LigneRes = 7
For Each Key1 In dict.Keys()
'Ecriture de résultats dans l'onglet "Resultats par categorie"
RCATD.Cells(LigneRes, 1) = Split(Key1, "-")(0)
RCATD.Cells(LigneRes, 2) = Split(Key1, "-")(1)
RCATD.Cells(LigneRes, 3) = Split(Key1, "-")(2)
RCATD.Cells(LigneRes, 4) = Split(Key1, "-")(3)
RCATD.Cells(LigneRes, 5) = Split(Key1, "-")(4)
Bon..
vu que tu t'amuses à supprimer les messages et à en recréer.. ça va vite devenir le bazar...
Je te remet donc ma réponse ( qui a été supprimée en même temps que ton message précédent..)
Ton problème se trouve à ces lignes là non ?
Donc.. vu que tu "split"' sur le caractère "-" .. normal qu'il n'apparaisse plus ensuite...
vu que tu t'amuses à supprimer les messages et à en recréer.. ça va vite devenir le bazar...
Je te remet donc ma réponse ( qui a été supprimée en même temps que ton message précédent..)
Ton problème se trouve à ces lignes là non ?
RCATD.Cells(LigneRes, 1) = Split(Key1, "-")(0)
RCATD.Cells(LigneRes, 2) = Split(Key1, "-")(1)
RCATD.Cells(LigneRes, 3) = Split(Key1, "-")(2)
RCATD.Cells(LigneRes, 4) = Split(Key1, "-")(3)
RCATD.Cells(LigneRes, 5) = Split(Key1, "-")(4)
Donc.. vu que tu "split"' sur le caractère "-" .. normal qu'il n'apparaisse plus ensuite...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour @Jordane,
En effet, tu as raison. Je ne trouve pas de code qui me permet de prendre la dernière colonne du dictionnaire Key1 qui est: RM.cells(ligneRM, 28)
En effet, tu as raison. Je ne trouve pas de code qui me permet de prendre la dernière colonne du dictionnaire Key1 qui est: RM.cells(ligneRM, 28)
RCATD.Cells(LigneRes, 1) = Split(Key1, "-")(0)
RCATD.Cells(LigneRes, 2) = Split(Key1, "-")(1)
RCATD.Cells(LigneRes, 3) = Split(Key1, "-")(2)
RCATD.Cells(LigneRes, 4) = Split(Key1, "-")(3)
RCATD.Cells(LigneRes, 5) = Key1
Si, dans tes variables, tu peux avoir le caractère "-" ... le mieux serait de ne pas utiliser ce caractère pour composer ta key
A la place, tu pourrais utiliser un caractère tel que le pipe "|"
et donc spliter sur ce caractère ensuite
Key = RM.Cells(LigneRM, 5) + "-" + RM.Cells(LigneRM, 16) + "-" + RM.Cells(LigneRM, 22) + "-" + RM.Cells(LigneRM, 13) + "-" + RM.Cells(LigneRM, 28)
A la place, tu pourrais utiliser un caractère tel que le pipe "|"
Key = RM.Cells(LigneRM, 5) + "|" + RM.Cells(LigneRM, 16) + "|" + RM.Cells(LigneRM, 22) + "|" + RM.Cells(LigneRM, 13) + "|" + RM.Cells(LigneRM, 28)
et donc spliter sur ce caractère ensuite
= Split(Key1, "|")