Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire du caractère tel que le cyrilique, etc..

6 réponses
Avatar
Andre
Bonjour à toutes et tous

Meilleur vœux pour cette année nouvelle.

J'ai un petit soucis en VBA Excel

J'effectue une requete SQL sur une table oracle et j'aimerais placer le résultat
sur une feuille Excel. Cela fonctionne bien excepté pour le texte qui est dans
d'autres langues comme le cyrilique. J'obtiens des "?"

comment puis-je faire?

Voici une copie du code (j'ai remplacé les paramètres de connections par des
valeurs bidons)


Merci d'avance de votre aide

André

Public conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim feuille As Worksheet

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Set feuille = ActiveWorkbook.Worksheets("substance")

feuille.Range("A2:D2000").Clear

str = "Provider=MSDAORA.1;"
str = str & "Data Source=sourcedb;"
str = str & "User ID=toto;"
str = str & "password=xxx;"

conn.ConnectionString = str
conn.CursorLocation = adUseClient

If conn.State = 0 Then
conn.Open
End If


sqlstr = "SELECT sl.SUBSTANCES_NAME nom"
sqlstr = sqlstr & " FROM substances s, substances_lg sl"
sqlstr = sqlstr & " WHERE s.SUBSTANCES_ID = sl.SUBSTANCES_ID
sqlstr = sqlstr & " AND sl.SUBSTANCES_LANGUE='BG'"

rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = rs("nom")
rs.MoveNext
r = r + 1
Wend
End If
rs.Close
conn.Close
Set rs = Nothing

6 réponses

Avatar
michdenis
Bonjour,

Pour utiliser la fonction personnalisée :
Tu peux répéter la ligne de commande aussi souvent
que désiré pour les différentes cellules à extraire...
ou créer une boucle !

L'autre alternative est de saisir en dur ce type de formule
='C:Mes Documents[MonFichier.xls]MaFeuille!A1
dans la cellule que l'on veut obtenir le résultat.

'--------------------------------
Sub Test()
MsgBox GetValue("C:UsersDMDocuments", _
"Fichier_Source.xls", _
"Feuil1", "C5")
End Sub
'--------------------------------

'Dans un module standard, tu copies cette fonction :

Public Function GetValue(ByVal path, ByVal file, _
ByVal sheet, ByVal ref) As Variant

' Macro XL4 Merci à John Walkenbach
' ============================= ' Retrieves a value from a closed workbook

Dim Arg As String

' Make sure the file exists
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

' Create the argument
Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1)
' Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents

End Function
'---------------------------------------




"Andre" a écrit dans le message de groupe de discussion :

Bonjour à toutes et tous

Meilleur voux pour cette année nouvelle.

J'ai un petit soucis en VBA Excel

J'effectue une requete SQL sur une table oracle et j'aimerais placer le résultat
sur une feuille Excel. Cela fonctionne bien excepté pour le texte qui est dans
d'autres langues comme le cyrilique. J'obtiens des "?"

comment puis-je faire?

Voici une copie du code (j'ai remplacé les paramètres de connections par des
valeurs bidons)


Merci d'avance de votre aide

André

Public conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim feuille As Worksheet

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Set feuille = ActiveWorkbook.Worksheets("substance")

feuille.Range("A2:D2000").Clear

str = "Provider=MSDAORA.1;"
str = str & "Data Source=sourcedb;"
str = str & "User ID=toto;"
str = str & "password=xxx;"

conn.ConnectionString = str
conn.CursorLocation = adUseClient

If conn.State = 0 Then
conn.Open
End If


sqlstr = "SELECT sl.SUBSTANCES_NAME nom"
sqlstr = sqlstr & " FROM substances s, substances_lg sl"
sqlstr = sqlstr & " WHERE s.SUBSTANCES_ID = sl.SUBSTANCES_ID
sqlstr = sqlstr & " AND sl.SUBSTANCES_LANGUE='BG'"

rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = rs("nom")
rs.MoveNext
r = r + 1
Wend
End If
rs.Close
conn.Close
Set rs = Nothing
Avatar
michdenis
Bonjour,

Je n'ai jamais fait face à une telle situation...
mais à partir du panneau de configuration, as-tu
installé la ou les langues requises ?



"Andre" a écrit dans le message de groupe de discussion :

Bonjour à toutes et tous

Meilleur voux pour cette année nouvelle.

J'ai un petit soucis en VBA Excel

J'effectue une requete SQL sur une table oracle et j'aimerais placer le résultat
sur une feuille Excel. Cela fonctionne bien excepté pour le texte qui est dans
d'autres langues comme le cyrilique. J'obtiens des "?"

comment puis-je faire?

Voici une copie du code (j'ai remplacé les paramètres de connections par des
valeurs bidons)


Merci d'avance de votre aide

André

Public conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim feuille As Worksheet

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Set feuille = ActiveWorkbook.Worksheets("substance")

feuille.Range("A2:D2000").Clear

str = "Provider=MSDAORA.1;"
str = str & "Data Source=sourcedb;"
str = str & "User ID=toto;"
str = str & "password=xxx;"

conn.ConnectionString = str
conn.CursorLocation = adUseClient

If conn.State = 0 Then
conn.Open
End If


sqlstr = "SELECT sl.SUBSTANCES_NAME nom"
sqlstr = sqlstr & " FROM substances s, substances_lg sl"
sqlstr = sqlstr & " WHERE s.SUBSTANCES_ID = sl.SUBSTANCES_ID
sqlstr = sqlstr & " AND sl.SUBSTANCES_LANGUE='BG'"

rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = rs("nom")
rs.MoveNext
r = r + 1
Wend
End If
rs.Close
conn.Close
Set rs = Nothing
Avatar
Andre
bonjour,

Merci pour vos réactions.

Pour votre information, je travaille pour la Commission Européenne. Je dois donc
extraire les données dans les 23 langues.

Je ne peux pas me permettre, pour chaque extraction, allez dans le panneau de
configuration pour modifier les paramètres (je deviendrais fou).

A moins qu'il y a une astuce pour le faire automatique !

André


In article , michdenis
says...

Bonjour,

Je n'ai jamais fait face à une telle situation...
mais à partir du panneau de configuration, as-tu
installé la ou les langues requises ?



"Andre" a écrit dans le message de groupe de
discussion :

Bonjour à toutes et tous

Meilleur voux pour cette année nouvelle.

J'ai un petit soucis en VBA Excel

J'effectue une requete SQL sur une table oracle et j'aimerais placer le résultat
sur une feuille Excel. Cela fonctionne bien excepté pour le texte qui est dans
d'autres langues comme le cyrilique. J'obtiens des "?"

comment puis-je faire?

Voici une copie du code (j'ai remplacé les paramètres de connections par des
valeurs bidons)


Merci d'avance de votre aide

André

Public conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim feuille As Worksheet

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Set feuille = ActiveWorkbook.Worksheets("substance")

feuille.Range("A2:D2000").Clear

str = "Provider=MSDAORA.1;"
str = str & "Data Source=sourcedb;"
str = str & "User ID=toto;"
str = str & "password=xxx;"

conn.ConnectionString = str
conn.CursorLocation = adUseClient

If conn.State = 0 Then
conn.Open
End If


sqlstr = "SELECT sl.SUBSTANCES_NAME nom"
sqlstr = sqlstr & " FROM substances s, substances_lg sl"
sqlstr = sqlstr & " WHERE s.SUBSTANCES_ID = sl.SUBSTANCES_ID
sqlstr = sqlstr & " AND sl.SUBSTANCES_LANGUE='BG'"

rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = rs("nom")
rs.MoveNext
r = r + 1
Wend
End If
rs.Close
conn.Close
Set rs = Nothing



Avatar
isabelle
bonjour André,

pour afficher cette fenêtre exécute cette macro :

Sub OptionsRégionalesEtLinguistiques()
Shell "rundll32.exe shell32.dll,Control_RunDLL " & "Intl.cpl"
End Sub

isabelle

Le 2010-01-08 07:05, Andre a écrit :
bonjour,

Merci pour vos réactions.

Pour votre information, je travaille pour la Commission Européenne. Je dois donc
extraire les données dans les 23 langues.

Je ne peux pas me permettre, pour chaque extraction, allez dans le panneau de
configuration pour modifier les paramètres (je deviendrais fou).

A moins qu'il y a une astuce pour le faire automatique !

André




Avatar
michdenis
| Je ne peux pas me permettre, pour chaque extraction, allez dans le panneau de
| configuration pour modifier les paramètres (je deviendrais fou).

D'abord, débute par l'installation d'une langue
comme le cyrillique et tu fais un test à savoir si
le résultat attendu est au rendez-vous lorsque tu
exécutes une requête.

Si cela fonctionne, alors, tu n'auras d'autre choix que de
faire toutes les installations requises...Tu insères ton CD
et tu ouvres la fenêtre du panneau de configuration...
quelques minutes plus tard, ton installation est terminée !

Au besoin, tu peux toujours demander à un technicien de le
faire pour toi... mais débute d'abord par tester !
Avatar
Michel Pierron
Bonsoir André;
Tu pourrais essayer :

If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = StrConv(rs("nom"), vbFromUnicode)
rs.MoveNext
r = r + 1
Wend
End If

MP

"Andre" a écrit dans le message de
news:
Bonjour à toutes et tous

Meilleur voux pour cette année nouvelle.

J'ai un petit soucis en VBA Excel

J'effectue une requete SQL sur une table oracle et j'aimerais placer le
résultat
sur une feuille Excel. Cela fonctionne bien excepté pour le texte qui est
dans
d'autres langues comme le cyrilique. J'obtiens des "?"

comment puis-je faire?

Voici une copie du code (j'ai remplacé les paramètres de connections par
des
valeurs bidons)


Merci d'avance de votre aide

André

Public conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim feuille As Worksheet

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Set feuille = ActiveWorkbook.Worksheets("substance")

feuille.Range("A2:D2000").Clear

str = "Provider=MSDAORA.1;"
str = str & "Data Source=sourcedb;"
str = str & "User ID=toto;"
str = str & "password=xxx;"

conn.ConnectionString = str
conn.CursorLocation = adUseClient

If conn.State = 0 Then
conn.Open
End If


sqlstr = "SELECT sl.SUBSTANCES_NAME nom"
sqlstr = sqlstr & " FROM substances s, substances_lg sl"
sqlstr = sqlstr & " WHERE s.SUBSTANCES_ID = sl.SUBSTANCES_ID
sqlstr = sqlstr & " AND sl.SUBSTANCES_LANGUE='BG'"

rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
r = 2
While Not rs.EOF
feuille.Cells(r, 1) = rs("nom")
rs.MoveNext
r = r + 1
Wend
End If
rs.Close
conn.Close
Set rs = Nothing


__________ Information from ESET Smart Security, version of virus
signature database 4758 (20100110) __________

The message was checked by ESET Smart Security.

http://www.eset.com







__________ Information from ESET Smart Security, version of virus signature database 4758 (20100110) __________

The message was checked by ESET Smart Security.

http://www.eset.com