XL 2016 Problème d'encodage de texte

  • Initiateur de la discussion Initiateur de la discussion Polobe36
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Polobe36

XLDnaute Occasionnel
Bonjour à tous,

Je rencontre un problème depuis que nous avons changé de version de GMAO.

J'ai une macro qui effectue une requête dans la base de données et restitue les résultats dans une feuille excel, notamment des commentaires qui sont, je pense, traités ou encodés d'une façon particulière dans la GMAO.

J'ai allégé la macro pour exposer mon problème et voici ce que renvoie le "rs(3)" pris en capture d'écran:
1028500


J'ai trouvé çà dans la GMAO, qui pourrait peut-être orienter:
1028463


Je vous remercie par avance de votre aide 🙂
 

Pièces jointes

  • Image1.png
    Image1.png
    33.8 KB · Affichages: 40
Dernière édition:
Bonjour à tous, BrunoM45,

J'ai tenté d'avancer de mon côté mais toujours rien..

Lorsque je met un debug.print sur rs(1) à rs(5), je ne rencontre un problème que sur rs(3), aucune valeur n'est retranscrite (alors qu'il y a bien du contenu).
Par contre, lorsque je met un espion sur rs(3).value, là on peut visualiser quelque chose, mais en amont au moment de "Set rs = cmd.Execute"
Je ne comprend pas.

Voici le code entier:

VB:
Sub ExtractionOT

Dim cnn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset

    Set cnn = New ADODB.Connection
    cnn.Open "***********;" & "***********;" & "***********"
    cmd.ActiveConnection = cnn
    cmd.CommandType = ADODB.CommandTypeEnum.adCmdText

SqlString = "SELECT CARL_CS02.CSWO_WO.CODE, CARL_CS02.CSRE_TECHNICIAN.CODE, CARL_CS02.CSSY_ACTOR.FULLNAME, CARL_CS02.CSSY_DESCRIPTION.RAWDESCRIPTION, CARL_CS02.CSWO_OCCUPATION.OCCUPATIONDATE, CARL_CS02.CSWO_OCCUPATION.DURATION"
SqlString = SqlString & " FROM (((CARL_CS02.CSWO_OCCUPATION LEFT JOIN CARL_CS02.CSRE_TECHNICIAN ON CARL_CS02.CSWO_OCCUPATION.TECHNICIAN_ID = CARL_CS02.CSRE_TECHNICIAN.ID) LEFT JOIN CARL_CS02.CSSY_ACTOR ON CARL_CS02.CSRE_TECHNICIAN.ACTOR_ID = CARL_CS02.CSSY_ACTOR.ID) INNER JOIN CARL_CS02.CSWO_WO ON CARL_CS02.CSWO_OCCUPATION.WO_ID = CARL_CS02.CSWO_WO.ID) LEFT JOIN CARL_CS02.CSSY_DESCRIPTION ON CARL_CS02.CSWO_OCCUPATION.COMMENTS_ID = CARL_CS02.CSSY_DESCRIPTION.ID"
SqlString = SqlString & " WHERE (((CARL_CS02.CSWO_WO.CODE) = '" & Recherche_CodeOTOccupation & "'))"
SqlString = SqlString & " ORDER BY CARL_CS02.CSWO_OCCUPATION.OCCUPATIONDATE;"
   
    cmd.CommandText = SqlString
    Set rs = New ADODB.Recordset
    Set rs = cmd.Execute
       
    compteur = 0
    Texte = ""
    tc = ""
    rs.MoveFirst
    Do While Not rs.EOF

        If rs(3) <> "" Then
            compteur = compteur + 1
            Texte = rs(4) & " - " & rs(2) & " - durée: " & rs(5) & "h" & Chr(10) & "   " & rs(3).Value
            If compteur = 1 Then
                tc = Texte
            Else
                tc = tc & Chr(10) & Texte
            End If
        End If
        rs.MoveNext
    Loop
    TXT_DescriptionOccupation.Value = tc
    rs.Close
    cnn.Close
   
End Sub
 
Re,

"Debug.print rs(3)" me renvoie la valeur "Null" (je précise qu'il y a bien une chaine de caractère normalement à retrouver)

J'ai exploré un peu l'espion de "rs", et dans le champ correspondant à rs(3) on retrouve la valeur "adLongVarChar" pour le DataTypeEnum.
Dans d'autres extractions que je fais de ce type depuis une autre base de données, ce même DataTypeEnum est lui de valeur "adVarWChar"
Est-ce que cela peut avoir une importance ?

1029632


Je précise aussi que ce problème survient depuis que nous avons changé de version de GMAO, et que je ne l'avais pas avant et que tout fonctionnait parfaitement. Est-ce que le traitement des commentaires pourrait avoir changé et impacté l'extraction ?
 
Bonjour à tous, @BrunoM45,

J'avance tout doucement.. et j'ai comparé les modèles physique de données entre les deux version de la GMAO et j'ai remarqué que le champ en question "RAWDESCRIPTION" est passé d'un type varchar à un type CLOB.

Je pense que là est l'origine de mon problème, et la question est comment traiter ce type de données dans excel ?
1029695
 
Re,

J'ai du nouveau: en fait je ne sais pas du tout pourquoi car il me semblait que çà ne marchait pas auparavant mais lorsque j'isole rs(3) j'obtiens de nouveau une valeur.

Le rs(4) et rs(5) renvoient respectivement une date et nombre d'heure.

Et lorsque je les concatène avec rs(3) , ce dernier ne me renvoie plus de valeur (alors que pas de soucis lorsque concaténé avec rs(2)).. incompréhensible !!

Je pensais à une conversion (Cdate, CStr ou Cvar) mais pas mieux

A vos idées..

1029760
 
Bonjour Polobe36,

Je ne vois pas pourquoi tu as ce problème

Il serait peut-être bon de déclarer ta variable en début de sub
Code:
Sub ExtractionOT
Dim Texte as String

Et ensuite, pourquoi ne pas faire la concaténation en plusieurs étapes !?

VB:
Texte = rs(4)
Texte = Texte & " - " & rs(3)

A+
 
Bonjour à tous, BrunoM45,

Moi non plus, je ne l'explique pas 🙁

J'ai effectivement décomposé le texte et çà marche comme cela.
Par contre je n'arrive pas à retravailler la date au format que je souhaites mais çà ira pour le moment.

Merci @BrunoM45 pour les conseils et les pistes de réflexion.

PS: je posterai une réponse sur la discussion au cas où je trouve l'origine du problème
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
4 K
Réponses
16
Affichages
5 K
G
Réponses
2
Affichages
1 K
G
Retour