Se connecter avec
S'enregistrer | Connectez-vous

Exporter données combobox vers Excel

Dernière réponse : dans Programmation

Bonjour à tous,

Me revoila déjà avec un nouveau souci. J'ai dans un form plusieurs combobox et textbox, et un bouton "valider" qui appelle SaveDataToExcel. Quand je valide, les résultats des combobox et textbox doivent se mettre dans un fichier Excel.

J'ai un problème sur la première ligne de copie (ligne 8) quand je valide : Run-time error 1004 : Application defined or object defined error

Voila mon code :
  1. Private Sub SaveDataToExcel()
  2. Dim m_Ligne As Long
  3. Dim ws_liste As Object
  4. Set ws_liste = WB.Worksheets("Liste")
  5. Const xlDown = -4121
  6. m_Ligne = ws_liste.Cells(1, 1).End(xlDown).Row + 1
  7.  
  8. ws_liste.Cells(m_Ligne, 1) = CmbNom.Text
  9. ws_liste.Cells(m_Ligne, 2) = TxtPrénom.Text
  10. ws_liste.Cells(m_Ligne, 3) = TxtAdresse.Text
  11. ws_liste.Cells(m_Ligne, 4) = TxtTéléphone.Text
  12. ws_liste.Cells(m_Ligne, 5) = TxtPortable.Text
  13. ws_liste.Cells(m_Ligne, 6) = TxtEmail.Text
  14. ws_liste.Cells(m_Ligne, 7) = Calendrier.Text
  15. ws_liste.Cells(m_Ligne, 8) = CmbFaire_part.Text
  16. ' ...
  17.  
  18. WB.Save
  19. End Sub


Je ne comprends pas pourquoi ça plante. Et vous ???

Merci.
Lassé par la pub ? Créez un compte

Meilleure solution

C'est bon, j'ai trouvé tout seul :sol:  .

Mon bouton "valider" me définit m_Ligne comme ça :
  1. If ws_liste.Cells(2, 1).Value = "" Then
  2. m_Ligne = 2
  3. Else
  4. m_Ligne = ws_liste.Cells(1, 1).End(xlDown).Row + 1

puis lance SaveDataToExcel, qui me re-définissait m_Ligne comme ça :
  1. m_Ligne = ws_liste.Cells(1, 1).End(xlDown).Row + 1


Donc dans le cas où la cellule (2,1) était vide, m_Ligne était à la fois égale à 2, et à 1...donc problème.
J'ai donc viré la définition de m_Ligne dans SaveDataToExcel.


Mais comme je n'avais pas mis le code de mon bouton "valider", il n'y a que moi qui pouvait trouver...Ouf !!!

Merci encore.

P.S : on peut pas choisir sa réponse comme meilleure réponse ???
Expert Programmation

Salut,

La ligne qui pose problème :
  1. ws_liste.Cells(m_Ligne, 1) = CmbNom.Text
Et bien prenons chaque variable et vérifions :
  1. MsgBox "nom de la feuille : " & ws_liste.Name
  2. MsgBox "Ligne : " & m_Ligne
  3. MsgBox "Adresse de la cellule : " & ws_liste.Cells(m_Ligne, 1).Address
  4. MsgBox "Valeur de la combobox : " & CmbNom.Text

Alors, ça plante où ?
EDIT: Pour l'adresse de la cellule, j'ai ajouté Address que j'avais oublié :pfff: 

Par principe, précise la propriété que tu veux assigner. Une cellule contient une formule, une valeur, un type d'affichage, une bordure, une couleur de fond, etc. Dans le cas qui nous concerne, il s'agit de la valeur, je pense :
  1. ws_liste.Cells(m_Ligne, 1).Value = CmbNom.Text

Bonjour,

Ça plante sur l'adresse de la cellule. J'ai le même message d'erreur que dans mon post précédent.

Pour la ligne, j'ai : 1048577. Ça correspond à quoi ?

J'ai ajouté le .value sur toutes mes lignes (toutes les combo et textbox), j'ai toujours le problème. J'essaierai d'y penser maintenant...

Merci.
Expert Programmation

Relis mon message. Je m'étais planté....

Ça donne quoi :
  1. MsgBox "Ligne : " & m_Ligne & vbCrLf & _
  2. "Adresse de la cellule : " & ws_liste.Cells(m_Ligne, 1).Address
Lassé par la pub ? Créez un compte