Enregistrer dans Fichier Exel [Résolu]

Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
- - Dernière réponse : foussouy
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
- 4 janv. 2013 à 17:52
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 ^^
Afficher la suite 

14 réponses

Meilleure réponse
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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.
Commenter la réponse de ucfoutu
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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
Commenter la réponse de foussouy
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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.
Commenter la réponse de ucfoutu
0
Merci
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.
Commenter la réponse de Utilisateur anonyme
0
Merci
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)
Commenter la réponse de Utilisateur anonyme
0
Merci
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)
Commenter la réponse de Utilisateur anonyme
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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 ?
Commenter la réponse de foussouy
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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.
Commenter la réponse de foussouy
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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 ?
Commenter la réponse de foussouy
0
Merci

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.
Commenter la réponse de Utilisateur anonyme
0
Merci
Avec la dernière réponse, cela fait trois fois.
Commenter la réponse de Utilisateur anonyme
Messages postés
55
Date d'inscription
dimanche 14 août 2011
Statut
Membre
Dernière intervention
1 février 2013
1
0
Merci
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.
Commenter la réponse de foussouy