VB remplir Combobox depuis une colonne excel?
Résolu
manautop
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
amyProg Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
amyProg Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
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
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:
- VB remplir Combobox depuis une colonne excel?
- Déplacer une colonne excel - Guide
- Trier colonne excel - Guide
- Formule somme excel colonne - Guide
- Liste déroulante excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
1 réponse
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/
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/
je ne sais pas quoi te dire pour te remercie
merci beaucoup