VB2008 et excel ( ecrire des informations à la suite )

cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017 - 25 avril 2008 à 23:12
mr_mojo_jr Messages postés 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 15 septembre 2010 - 15 sept. 2010 à 12:56
<hr />
Bonjour,

Voici mon probléme :

J' ai une feuille Excel avec un tableau ( 5 colonnes et 8 lignes )

Avec des textbox, j' arrive à écrire dans les cellules de la premiére ligne quand je clique sur un bouton avec le code :

xls_fichier.Sheets(1).Cells(20, 1) = Txt01.Text
      etc

( 20, 1) correspondant à ma premiére case de la premiére ligne et ( 20, 8 ) ma derniére case de la premiére ligne.
( 21, 1) correspondant à ma premiére case de la deuxiéme ligne et ( 21, 8 ) ma derniére case de la deuxiéme ligne.
.......
( 27, 1) ............Derniére ligne

Mais j' aimerais que lorsque je rentres de nouvelles données et que je clique sur mon bouton, ces nouvelles informations ne remplacent
pas celles de la premiére ligne, mais qu' elles soient copiées dans la deuxiéme ligne et ainsi de suite jusqu' a la huitiéme.

Merci par avance.
Fripouil

5 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
26 avril 2008 à 11:55
remplace le numéro de la ligne par une variable(publique) que tu incrémentes à chaque fois que tu appuies sur ton bouton
ou encore
 dans l'évenment click de ton bouton fais une détection du numéro de la derniere ligne écrite puis tu fais ta copie en ajoutant 1 à ce numéro
xls_fichier.Sheets(1).Cells(20, NumeroDerniereLigne +1) = Txt01.Text

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
26 avril 2008 à 12:12
Merci pour cette réponse.

Mais cela n' est pas à quoi je pensais.

Je ne rentre pas tout mon tableau en même temps.

Donc il faudrait que lorsque je clique sur mon bouton, mon prog regarde si la premiére case de la premiére ligne est vide, si oui, il copie les données dans cette ligne, si non, il passe à la suivante et cela jusqu' a temps qu' il trouve une ligne vide ( avec comme maxi la 8éme ligne ).

Comment faire une condition du style :

Si 20,1 est vide on copie
Si 20,1 est remplie on passe à 21, 1
etc
jusqu' a 27, 1

Merci encore
Fripouil
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
26 avril 2008 à 12:22
for i = 20 to 27
    if cells(i,1)= "" then 'si la cellule est vide
        cells(i,1)= "ceque tu verux y mettre " 'on met dedans ce qui va bien
        exit for 'et on sort de la boucle puisque on vient d'écrire pas la peine de tester les autres cellules
    end if
next i

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
27 avril 2008 à 02:18
Ca ne fonctionne toujours pas, voila ce que j' ai dans mon bouton à la base pour l' écriture :











Dim
xls_fichier As Excel.Workbookxls_fichier = GetObject(My.Application.Info.DirectoryPath & "/Data/Rapport.xls")

xls_fichier.Sheets(1).Cells(20, 1) = Txt_01.Text ' cela me copie bien les données

xls_fichier.Windows(1).Visible = True

xls_fichier.Save()

xls_fichier.Close()

xls_fichier = Nothing

Comment je dois m' y prendre car si je fais :

Dim

xls_fichier As Excel.Workbook
xls_fichier = GetObject(My.Application.Info.DirectoryPath & "/Data/Rapport.xls")

For i = 20 To 27
If xls_fichier.sheets(1).cells(i,1) = "" then
---> Erreur

xls_fichier.sheets(1).cells(i, 1) = Txt_01.text

exit for 
end if
next i

J' ai l' erreur :

La résolution de surcharge a échoué, car aucun '=' Public ne peut être appelé avec ces arguments :     'Public Shared Operator =(a As String, b As String) As Boolean':        
L'argument qui correspond au paramètre 'a' ne peut pas être converti de '__ComObject' en 'String'.

Et là je ne comprends rien...
Fripouil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mr_mojo_jr Messages postés 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 15 septembre 2010
15 sept. 2010 à 12:56
essaie de notroler si la cellule a plutôt une valeur "null" avant de vérifier si elle est vide :

If xls_fichier.sheets(1).cells(i,1).Value Is Nothing then

xls_fichier.sheets(1).cells(i, 1) = Txt_01.text
exit for 

else

If xls_fichier.sheets(1).cells(i,1) = "" then

xls_fichier.sheets(1).cells(i, 1) = Txt_01.text
exit for 

end if 

end if
0