VB2008 et excel ( ecrire des informations à la suite )
cs_Fripouil
Messages postés175Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 8 mai 2017
-
25 avril 2008 à 23:12
mr_mojo_jr
Messages postés4Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention15 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 :
( 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
A voir également:
VB2008 et excel ( ecrire des informations à la suite )
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 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
cs_Fripouil
Messages postés175Date d'inscriptionlundi 16 décembre 2002StatutMembreDerniè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
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 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
cs_Fripouil
Messages postés175Date d'inscriptionlundi 16 décembre 2002StatutMembreDerniè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
Vous n’avez pas trouvé la réponse que vous recherchez ?
mr_mojo_jr
Messages postés4Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention15 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