[R] Charger combobox avec valeur excel

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1039
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

[R] Charger combobox avec valeur excel

#1

Message par walkson »

Bonsoir,
Je cherche le moyen de charger un combobox à partir d'une colonne d'une feuille Excel.
Mes recherches, au mieux, m'ont permis d'avoir une valeur et non la totalité des valeurs. Pas trouvé non plus de la doc sur ce domaine...
J'ai tenté avec une array mais sans résultat
Je joints ce bout de code si ca peut être utile

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <Excel.au3>
Local $oExcel = _ExcelBookNew() ;Create new book, make it visible

For $i = 1 To 5 ;Loop
    _ExcelWriteCell($oExcel, $i, $i, 1) ;Write to the Cell
Next




#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 207, 133, 193, 125)
$Button1 = GUICtrlCreateButton("OK", 120, 104, 73, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$ListContent1 = $oExcel.Activesheet.Range("A5").value
$ListContent = _ExcelReadCell($oExcel, 3, 1)
_ExcelBookClose($oExcel)
MsgBox(0,"",$ListContent1)
MsgBox(0,"",$ListContent)
$List1 = GUICtrlCreateCombo("", 8, 80, 145, 19)
 GUICtrlSetData($List1, $ListContent1)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $ListData = GUICtrlRead($List1)
            MsgBox(64, "AutoIt3", $ListData)
    EndSwitch
WEnd
Si quelqu'un a une idée, merci d'avance.
Walkson
Modifié en dernier par walkson le dim. 27 nov. 2011 19:29, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Charger combobox avec valeur excel

#2

Message par mikell »

_ExcelReadArray
Create an array from a row or column of the active worksheet.
...
GUICtrlSetData
Combo, List, ListView, ListViewItem: An Opt("GUIDataSeparatorChar",...) separated list of items.
Tadaaa... Image

Code : Tout sélectionner

#include <Excel.au3>
Local $oExcel = _ExcelBookNew()

For $i = 1 To 5 ;Loop
    _ExcelWriteCell($oExcel, $i, $i, 1) 
Next
$text = ""

$aArray = _ExcelReadArray($oExcel, 1, 1, 5, 1, 0) 
For $i = 0 to UBound($aArray)-1
$text &= $aArray[$i] & @CRLF
Next

MsgBox(0,"",$text)
après, alimenter une combo... on va dire que ça ira, eh ? :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1039
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Charger combobox avec valeur excel

#3

Message par walkson »

Bonjour,
Merci Mikell pour votre réponse mais...
Je pensais alimenter facilement le combo et c'est pas le cas. Aprés avoir tatonner, j'ai réussi à mettre les items à la verticale (je n'avais qu'une ligne avec toutes les valeurs au départ)
Le problème est que j'obtiens une valeur suivi d'un "double zéro collé".

je me suis penché sur le GUIDataSeparatorChar mais sans succès( comme on peut le faire sur un TXT ou un INI par "|" si je ne dis pas de bêtise.). Je pense que mon problème se situe ici.

Voici mon code:

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <Excel.au3>
Local $oExcel = _ExcelBookNew() ;Create new book, make it visible

For $i = 1 To 5 ;Loop
    _ExcelWriteCell($oExcel, $i, $i, 1) ;Write to the Cell
Next

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 207, 133, 193, 125)
$Button1 = GUICtrlCreateButton("OK", 120, 104, 73, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


$text = ""
$List1 = GUICtrlCreateCombo("", 8, 80, 145, 19)
$aArray = _ExcelReadArray($oExcel, 1, 1, 5, 1, 0)
For $i = 0 to UBound($aArray)-1
$text = $aArray[$i] & @CRLF
 GUICtrlSetData($List1, $text )
Next
_ExcelBookClose($oExcel)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $ListData = GUICtrlRead($List1)
            MsgBox(64, "AutoIt3", $ListData)
    EndSwitch
WEnd
Merci de votre patience et de votre aide
Walkson
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Charger combobox avec valeur excel

#4

Message par mikell »

walkson a écrit : Je pense que mon problème se situe ici.
Tout à fait cher ami Image
Les items dans une combo doivent être séparés par un "séparateur", par défaut : "|"
Le Opt("GUIDataSeparatorChar",...) ne sert qu'à définir un séparateur différent si besoin
Voilà la base du script

Code : Tout sélectionner

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <Excel.au3>

$oExcel = _ExcelBookNew()
For $i = 1 To 5 
    _ExcelWriteCell($oExcel, $i, $i, 1)
Next

$Form1 = GUICreate("Sélectionnez un nom", 256, 90)
$Combo = GUICtrlCreateCombo("", 16, 16, 220, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)

$aArray = _ExcelReadArray($oExcel, 1, 1, 5, 1, 0)
For $i = 0 to UBound($aArray)-1
     GUICtrlSetData($Combo, $aArray[$i] & "|")
Next

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Remarquez qu'ici, on alimente directement la combo un élément après l'autre dans la boucle For
Mais dans cette boucle on aurait aussi bien pu concaténer un $text en faisant :

Code : Tout sélectionner

$text &= $aArray[$i] & "|"
, et en sortie de boucle, envoyer le $text final dans la combo Image
Modifié en dernier par mikell le jeu. 17 nov. 2011 15:14, modifié 1 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1039
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [R] Charger combobox avec valeur excel

#5

Message par walkson »

Mikell, merci de votre réponse, vu comme ça, cela semble très simple et idéalement à mes souhaits
Bonne journée et merci encore
Walkson
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre