VB remplir Combobox depuis une colonne excel?

Résolu
manautop Messages postés 152 Statut Membre -  
amyProg Messages postés 12 Statut Membre -
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

1 réponse

  1. manautop Messages postés 152 Statut Membre 3
     
    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
    1. amyProg Messages postés 12 Statut Membre
       
      Bonjour manautop,

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