VB remplir Combobox depuis une colonne excel?

Résolu/Fermé
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 15 mars 2012 à 19:34
amyProg Messages postés 12 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 13 août 2015 - 10 juin 2015 à 14:46
Bonjour,

Je me permet de vous contacter car j'ai un petit problème tout bete mais je ne vois pas ou est l'erreur

j'ai ecris sous VB (& wpf) un petit programme qui me permet de rejouter des info sur la derniere ligne d'un fichiers excel qui marche plutot bien



(prob fin du mess)



Dim appExcel As Microsoft.Office.Interop.Excel.Application
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook
Dim dernière As Integer 'dernière ligne pleine
Dim Ligne As Integer


Sub africamgkf()
'lancer excel
appExcel = CreateObject("Excel.Application")
On Error Resume Next 'Pour éviter les erreur si classeur n'existe pas

wbExcel = appExcel.Workbooks.Open(a1)
If wbExcel Is Nothing Then
MsgBox("Erreur sur ouverture classeur", vbCritical)
Exit Sub
End If
'Masque l'application excel (valeur par défaut)
appExcel.Visible = False

wbExcel.Sheets(3).Range("a1").Select()
'Pour chaque colonne de 1 à 12
For i = 1 To 12
' on détermine à partir du bas, le rang de la dernière cellule non vide
Ligne = wbExcel.Sheets(3).Cells(65530, i).end(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row
'si le rang trouvé est supérieur au plus grand précédent, "dernière" prend cette valeur:
If Ligne > dernière Then dernière = Ligne
Next i
'Et dernière = 34 , ce qui était demandé. La preuve:
wbExcel.Sheets(3).Range("a" & dernière).Offset(1, 0).Select()
' puisqu'on a déterminé la dernierel igne pleine il suffit de rajouter un pour aller à la ligne vide

Dim lvide = dernière + 1
Dim Qgeneral

If RadioButton1.IsChecked Then
Qgeneral = "Q1"
ElseIf RadioButton2.IsChecked Then
Qgeneral = "Q2"
ElseIf RadioButton3.IsChecked Then
Qgeneral = "Q3"
ElseIf RadioButton4.IsChecked Then
Qgeneral = "Q4"
End If

wbExcel.Sheets(3).Cells(lvide, 1) = Qgeneral
wbExcel.Sheets(3).Cells(lvide, 2) = TextBox2.Text
wbExcel.Sheets(3).Cells(lvide, 3) = ComboBox1.Text
wbExcel.Sheets(3).Cells(lvide, 4) = TextBox3.Text
wbExcel.Sheets(3).Cells(lvide, 5) = DatePicker1.Text & "to" & DatePicker2.Text
wbExcel.Sheets(3).Cells(lvide, 6) = TextBox4.Text
wbExcel.Sheets(3).Cells(lvide, 7) = TextBox5.Text
wbExcel.Sheets(3).Cells(lvide, 8) = TextBox6.Text
wbExcel.Sheets(3).Cells(lvide, 9) = TextBox7.Text
wbExcel.Sheets(3).Cells(lvide, 10) = TextBox8.Text
'Sauve le classeur
wbExcel.Save()
wbExcel.Close(True) 'Ferme le classeur
appExcel.Quit()
wbExcel = Nothing
appExcel = Nothing
appExcel = Nothing 'libération mémoire.
wbExcel.quit()


et je voudrais passer à l'étape superieur qui consite à pourvoir modifier l'une des info selon la ligne.

Sub listeresult()

'lancer excel
appExcel = CreateObject("Excel.Application")
On Error Resume Next 'Pour éviter les erreur si classeur n'existe pas

wbExcel = appExcel.Workbooks.Open(a1)
If wbExcel Is Nothing Then
MsgBox("Erreur sur ouverture classeur", vbCritical)
Exit Sub
End If

'Masque l'application excel (valeur par défaut)
appExcel.Visible = False
Dim cell

For Each cell In wbExcel.Sheets(3).Range("B65536").End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row()
ComboBox2.Items.Add(cell)


Next cell

End Sub


quand je teste je n'ai pas d'erreur qui apparait en revanche ma combox n'a rien à l'intérieur et ne se déroule pas.

Pouvez vous m'aider svp ??


merci d'avance

A voir également:

1 réponse

manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
19 mars 2012 à 02:09
Bonjour à tous,

j'ai trouvé ma solution (comme pour la plus part des fois) alors je viens clore cette monodiscution avec la solution , sait on jamais ça peut aider quelqu'un

donc pour remplir une combobox en VB (wpf) à partir d'une colonne excel voici ma solution

ne pas oublier d'intégrer au préalable les librairie excel


'Déclaration des variables

Dim appExcel As Microsoft.Office.Interop.Excel.Application 'Application Excel
Dim wbExcel As Microsoft.Office.Interop.Excel.Workbook 'Classeur Excel
Dim wsExcel As Microsoft.Office.Interop.Excel.Worksheet 'Feuille Excel
Dim lngCnt As Long
Dim lngRowCount As Long

Public Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded



'Ouverture de l'application
appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
wbExcel = appExcel.Workbooks.Open(a1)
'wsExcel correspond à la première feuille du fichier
wsExcel = wbExcel.Worksheets(3)
appExcel.Visible = True

lngRowCount = appExcel.ActiveSheet.usedrange.rows.count

For lngCnt = 1 To lngRowCount

ComboBox1.Items.Add(appExcel.Range("B" & lngCnt).Value)

Next

appExcel = Nothing




End Sub


merci à vous cf ma prochaine question loool
et merci à ce post qui m'a permis de trouver mon erreur http://www.bigresource.com/Tracker/Track-vb-kNViJm2wRS/
0
amyProg Messages postés 12 Date d'inscription lundi 1 juin 2015 Statut Membre Dernière intervention 13 août 2015
10 juin 2015 à 14:46
Bonjour manautop,

je ne sais pas quoi te dire pour te remercie
merci beaucoup
0