Enregistrer dans Fichier Exel [Résolu]

Signaler
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
-
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
-
Bonsoir,
Je cherche comment enregistrer des textbox dans un document excel.

J'ai trouver ceci : http://www.vbfrance.com/codes/CODE-PERMETTANT-MANIPULER-OBJETS-EXCEL-NET_38534.aspx

J'essaie ce code :

Dim i As Integer
        i = 0
        For i = 0 To 100
            appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & i).value = (Me.Controls("textbox" & i).Text)
        Next


Mais le problème c'est qu'une exception apparaît lors de l'enregistrement de mon fichier.
Et je voulais aussi savoir si il existait un code permettant de modifier la taille des cellules car les cellules sont trop petites pour les textbox.
Je vous remercie d'avance ^^

14 réponses


Bonjour,

Dans l'aide
d'Excel. Rubrique Limites d'Excel


Les nombres sont limités à 15 chiffres.

1) Prends ton enregistreur de macros.
2) Applique le format texte à tes cellules, ou à ta colonne remplie.
3) Arrête l'enregistreur de macros
4) Ouvre l'éditeur VBA
5) Regarde le code que tu dois ajouter à ta macro initiale par copier-coller.
6) Si jamais ters colonnes sont trop étroites, retourne à 2 en faisant les changements qui s'imposent.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Bonjour,
Mais le problème c'est qu'une exception apparaît lors de l'enregistrement de mon fichier.

Mais le code que tu montres ne traite pas de l'enregistrement du classeur !
A ce propos : un classeur a-t-il préalablement été ouvert ?
et si oui ;
- comment ?
- possède-t-il bien une feuille nommée "Page 1" ?
- comment l'enregistres-tu ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Bonjour,


Mais le problème c'est qu'une exception apparaît lors de l'enregistrement de mon fichier.


Il va falloir attendre que le devin de service découvre de quelle exception, il s'agit.

En attendant, tu peux toujours regarder s'il y a une feuille du nom de Page 1 à quelque part dans le classeur.


Et je voulais aussi savoir si il existait un code permettant de modifier la taille des cellules car les cellules sont trop petites pour les textbox.


Pour le trouver, tu peux utiliser le moyen universel d'apprendre VBA, dans Word et Excel: enregistrer une macro.
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
Voici le code complet :

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim appxls As Microsoft.Office.Interop.Excel.Application

        appxls = New Microsoft.Office.Interop.Excel.Application
        appxls.Visible = True

        'Ajouter un nouveau classeur
        appxls.Workbooks.Add()
        appxls.ActiveWorkbook.SaveAs("C:\Users\Youyou\Desktop\NouveauClasseur")
        appxls.ActiveWorkbook.Worksheets("Feuil1").Select()

        'Renommer une feuille
        appxls.ActiveWorkbook.Worksheets("Feuil1").Name = "Page 1"
        appxls.ActiveWorkbook.Worksheets("Page 1").Select()
        Dim i As Integer
        i = 0
        For i = 0 To 100
            appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & i).value = (Me.Controls("textbox" & i).Text)
        Next
        appxls.ActiveWorkbook.Save()
    End Sub
End Class


Le code d'erreur est le suivant : Exception de HRESULT : 0x800A03EC
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
ou : comment piloter depuis VB.Net VBA/Excel sans maîtriser VBE/Excem
Ainsi, par exemple :
appxls.ActiveWorkbook.Worksheets("Feuil1").Select()

seerait, depuis VBA directement :
ActiveWorkbook.Worksheets("Feuil1").Select()

Or, Select n'est pas une fonction, mais une méthode
Je le répète donc : on ne peut "piloter" VBA pour faire ce que l'on se sait faire depuis VBA lui-même.
On se demande au passage à quoi peut bien servir cette sélection (même écrite proprement). Elle serait inutile en VBA et encore moins expliquable en pilotage de VBA !
Voilà (entre autres).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Bonjour,

[i]Pour ucfoutu
On se demande au passage à quoi peut bien servir cette sélection (même écrite proprement).


Ben quoi, à sélectionner deux fois la feuille qui est déjà la feuille active par défaut à la création du classeur. En ces temps d'incertitude, il faut avoir ses objets bien en main. /i

Maintenant pour la question, comme on ne sait pas c'est quelle ligne qui cause l'erreur OLE, je vais jouer au devin.

Juste là tu as un sérieux problème. Il n'y a pas de ligne 0, dans Excel.

For i = 0 To 100
    appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & i).value = (Me.Controls("textbox" & i).Text)
Next


Et puis tant qu'à y être, si tu as "juste" 100 textboxes, tu vas aussi frapper le mur; parce que là tu itères sur 101 texboxes. (Et puis, moi, si j'étais ton utilisateur, j'aurais envie de t'étrangler au 10e textbox, et je t'enverrais au diable en te disant de te mettre ton programme à un certain endroit de ton anatomie au 15e.

J'ai la flemme de tester, mais je suppose qu'avec

     appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & i).value = (Me.Controls("textbox" & i).Text)


Cela devrait aller.

Correction.

Ta ligne corrigée devrait, je suppose, être celle-ci:

appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & i).value = (Me.Controls("textbox" & (i+1)).Text)

Correction de la correction.
(Jamais 2 sans 3 qu'ils disent)

appxls.ActiveWorkbook.Worksheets("Page 1").range("A" & (i+1)).value = (Me.Controls("textbox" & i).Text)
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
Effectivement cela venait du fait que je commençait la variable i à 0 alors qu'il n'y a pas de ligne 0 dans excel . Ça marche maintenant !
Merci de l'aide mais sauriez-vous comment modifier la taille de la cellule ?
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
En fait le numéro est composé de 20 chiffres mais lorsque j'enregistre, le numéro apparaît sous la forme 8,4154654+24.
Il l'écrit avec des puissances de 10 en écriture scientifique.
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
C'est bon j'ai trouvé comment écrire de long nombre, il suffisait tout simplement de rajouter une apostrophe avant le nombre.
Exemple dans une cellule :
'25156484511465416515165 affiche 25156484511465416515165 dans la cellule.
Mais il y aurait-il un moyen de modifier la taille de la cellule avec un code ?


Mais il y aurait-il un moyen de modifier la taille de la cellule avec un code ?


Cela fait deux fois que je te dis de prendre l'enregistreur de macros pour enregistrer ce que tu fais au clavier, et tu vas l'avoir ton hospice de code pour agrandir tes cellules.

Avec la dernière réponse, cela fait trois fois.
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
Ah d'accord merci je viens de le faire et la ligne qui en résulte est :

Columns("A:A").ColumnWidth = 27

J'ai donc rajouter appxls devant et ça donne :
appxls.Columns("A:A").ColumnWidth = 27


Et ça marche ! Merci encore de ton aide.