IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VB] Probleme ecriture de contenu d'une userform dans *.xls


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut [VB] Probleme ecriture de contenu d'une userform dans *.xls
    bonjour a tous.
    j'utilise le programme suivant pour ecrire dans un fichier excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Public appexcel As Excel.Application
     
     
    Private Sub Form()
     
    Dim PathFileName As String, PathName As String, CurrFileName As String
     
    'creation d'une instance Excel
    Set appexcel = CreateObject("excel.application")
     
    'chemin d'accés au fichier toto.xls
    PathName = "chemin d'acce a mon fichier"
    PathFileName = PathName & "toto.xls"
     
    'ouverture du fichier toto
    Open PathFileName For Append Access Read Write As #1
     
     
    'ecriture des données dans le fichier toto
    Print #1, Text4.Text & vbTab & Text1.Text & vbTab & Combo8.Text & vbTab & _
              Text2.Text & vbTab & Text3.Text & vbTab & Combo6.Text & vbTab & _
              Text5.Text & vbTab & Combo1.Text & vbTab & Combo2.Text & vbTab & _
              Combo7.Text & vbTab & Combo3.Text & vbTab & Text7.Text & vbTab & _
              Text8.Text & vbTab & Combo4.Text & vbTab & Text9.Text & vbTab & _
              Text10.Text & vbTab & Text12.Text & vbTab & Text13.Text & vbTab & _
              Text11.Text & vbTab & Combo5.Text & vbTab & Text14.Text & vbTab & _
              Text15.Text & vbTab & Text16.Text & vbTab & Text17.Text & vbTab & _
              Text18.Text & vbTab & Text19.Text
     
    Close #1
    appexcel.Quit
    End Sub
    le probleme avec ce code c que lorsque j'ecrit dans un fichier que je viens de creer je n'ai pas de souci j'arrive bien a ecrire ligne par ligne. mais si je l'utilise pour ecrire dans un fichier excel deja existantt je n'y arrive pas je n'ai aucune ecriture de ligne.
    je precise que ce fichier excel a des filtre et un figeage de volet mais je ne comprend pas pourquoi cela pose probleme.

    merci bcp pour votre aide.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà une observation : Un fichier Excel n'est pas un fichier texte. Tu dois passer par le VBA d'Excel. Mais je laisse SilkyRoad, qui est un spécialise VB->VBA, te répondre.

    A+

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tu as du faire des mélange de copier coller ...

    déjà tu peu supprimer toutes les lignes relative à l'objet excel dont tu ne te sert pas ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public appexcel As Excel.Application 
    'creation d'une instance Excel
    Set appexcel = CreateObject("excel.application") 
    appexcel.Quit
    ensuite avec tes autre ligne tu traite l'écriture dans un fichier texte tabulé ... ( chaque colonne séparé par une tabulation) fichiers dont l'extension usuelle est ".txt"... , si tu les modifie sous excel ... avec une extension en .xls.. tu change le format du fichier .. (en format excel...) et donc tu ne peu plus utiliser la même méthode pour rajouter des valeurs...

  4. #4
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    je doit avouer que je suis un peu perdu.

    ce programme fonctionne bien si je part d'un fichier excel vide.
    de plus je suis obliger de lancer l'application excel dans mon programme VB vu que je passe par une userform pour remplir mon fichier excel.

    en gros la chose qui me gene sont tout les parametre qui sont deja applique au fichier excel (filtres,format de cellule, et figeage.)mais je ne sait pas comment passez outre.

  5. #5
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    excuse moi je ne suis pas obliger de le crer pardon j'avais pas fait attention il vaut mieu que j'utilise un GetOpenObject.
    merci

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par calimero91
    excuse moi je ne suis pas obliger de le crer pardon j'avais pas fait attention il vaut mieu que j'utilise un GetOpenObject.
    merci
    non tu as mal lu... de la façon dont tu ecrit dans le fichier tu n'as pas besoin d'objet excel... , supprime les lignes .. citées plus haut...

    ou change la méthode d'écriture dans fichier...

    les lignes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Open PathFileName For Append Access Read Write As #1
    'ecriture des données dans le fichier toto
    Print #1, Text4.Text &...
    Close #1
    suffisent pour écrire dans un fichier texte tabulé ... tu n'as pas besoin d'objet excel !

  7. #7
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    j'ai bien tout enlever mais ça me fait la meme chose.
    j'ecris correctement dans mon fichier excel quand je prend un fichier que je viens de crer sans aucune propriete. mais des que j'utilise un fichier deja existant ça ne marche pas.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par calimero91
    j'ai bien tout enlever mais ça me fait la meme chose.
    j'ecris correctement dans mon fichier excel quand je prend un fichier que je viens de crer sans aucune propriete. mais des que j'utilise un fichier deja existant ça ne marche pas.
    Citation Envoyé par bbil
    ensuite avec tes autre ligne tu traite l'écriture dans un fichier texte tabulé ... ( chaque colonne séparé par une tabulation) fichiers dont l'extension usuelle est ".txt"... , si tu les modifie sous excel ... avec une extension en .xls.. tu change le format du fichier .. (en format excel...) et donc tu ne peu plus utiliser la même méthode pour rajouter des valeurs...

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello,

    J'ai retrouvé ça de Theocourant / Ouverture et écriture dans un fichier Excel depuis VB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Version    'Théocourant
    Set appExcel = CreateObject("Excel.Application")
    Set WExl = Application.Workbooks.Open _
            (Filename:="LeFichier.xls", UpdateLinks:=False, AddToMRU:=False, Editable:=True)
        WExl.Sheets("Feuil1").Cells(1, 1).Value = "Ma donnée..."
        WExl.Close True, "./Rep/LeFichier.xls"
    Tu dois utiliser l'objet "WExl" pour écrire dans la feuille "feuil1"

    Tu dis

  10. #10
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    ouskel'n'or
    l'objet WExl ne fonctionne apparement pas ou alors je n'arrive pas a m'en servir.de plus je n'ai trouver aucune aide dessus.
    je ne voit vraiment pas comment je vais reussir a ecrire dans ce foutu fichier.commence a m'agacer ce bazar je vais continuer a chercher je finirai par y arriver ou a trouver un exemple de code.
    mais ce que ej n'arrive vraiment pas a comprendre ( je doit etre trop bete...lol)c pourqui quand je part d'un fiochier excel tout neuf j'arrive a ecrire mes ligne a la suite des autre sans souci et que la partant d'un fichier existant je n'y arrive pas.
    bbil essaye de m'expliquer depuis tout a l'heure mais je n'arrive pas a comprendre lol.vu que ça marche dans un fichier et pas dans l'autre.

  11. #11
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    ok j'ai compris ce que tu me dit depuis tout a l'heure bbil j'ai modifier le fichier que j'avais crer et je l'enregistrer en .XLS et effictevement je en peut plus ecrire dedans.
    alors maintenant la question est comment reussir a ecrire dans un fichier .xls

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bon pour comprendre essai la manip suivante ..
    créé un nouveau fichier par ta méthode ...

    ouvre le avec un editeur de texte ( le bloc note: notepad par exemple...)
    examine sont format...
    ferme le fichier ouvre le et modifie le sous excel....

    ouvre ensuite à nouveau ton fichier sous notepad...



    [edit]lol la on c'est croisé....

  13. #13
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    le je viens de creer mon fichier avec le programme j'ai ete ensuite le modifier dans excel et je l'ai reenregistre en .xls et effictivement maintenant je ne peu plus ecrire avec le programme.
    quel est la methiode pour ecrire dans un format .xls directement stp?

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    quel est la methiode pour ecrire dans un format .xls directement stp?
    Celle que je t'ai donnée. Seulement je n'avais pas compris que ton fichier n'avait pas encore été enregistré au format xls.

    A+

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par calimero91
    le je viens de creer mon fichier avec le programme j'ai ete ensuite le modifier dans excel et je l'ai reenregistre en .xls et effictivement maintenant je ne peu plus ecrire avec le programme.
    quel est la methiode pour ecrire dans un format .xls directement stp?
    je suis pas allez voir mais je suis sur qu'il doit y avoir un exemple dans la FAQ VB...!!

    [edit] finalement peu-être pas dans la FAQ mais il y as un tutorial
    http://drq.developpez.com/vb/tutoriels/Excel/

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    calimero91,

    Je pense que le code que tu donnes a induit tout le monde en erreur.

    Pour écrire dans un fichier Excel, il faut utiliser les objets Excel (Feuille, Cellule).
    Il ne faut donc pas le faire avec Print #.

    Je pense que c'est la réponse de ouskel'n'or / Theocourant qui se rapproche le plus de ce que tu veux faire.

    Il y a, peut-être, une petite correction à y apporter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WExl = appExcel.Workbooks.Open _ 
            (Filename:="LeFichier.xls", UpdateLinks:=False, AddToMRU:=False, Editable:=True)
    au lieu de
    Set WExl = Application.Workbooks.Open _
    (Filename:="LeFichier.xls", UpdateLinks:=False, AddToMRU:=False, Editable:=True)
    Bonne programmation.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  17. #17
    Membre confirmé Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Par défaut
    bonjour a vous qui m'avais aider.merci bbil de m'avoir fait comprendre mon erreur.
    maintenant j'ai le code suivant et sa fonctionne bien pour ce qui est de l'ecriture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Public Sub Form()
     
    'ouverture de l'application
    Set appexcel = CreateObject("excel.application")
    'ouverture du fichier "toto"
    Set wbexcel = appexcel.Workbooks.Open("c:\MyDocs\toto.xls")
    'ouverture de la feuille "tata"
    Set wsexcel = wbexcel.Worksheets("tata")
     
    insertion ligne apres la derniere ligne ecrite???????????????????????
     
    i = 1
    j =  premiere cellule vide dans la colonne A????????????????????????
     
    wsexcel.Cells(j, i).Value = Text4.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text1.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo8.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text2.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text3.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo6.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text5.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo1.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo2.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo7.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo3.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text7.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text8.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo4.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text9.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text10.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text12.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text13.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text11.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Combo5.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text14.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text15.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text16.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text17.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text18.Text
    i = i + 1
    wsexcel.Cells(j, i).Value = Text19.Text
    i = i + 1
     
    wbexcel.Close   'fermeture du classeur excel
    appexcel.Quit   'fermeture de l'application excel
    'desallocation memoire
    Set wsexcel = Nothing
    Set wbexcel = Nothing
    Set appexcel = Nothing
     
    End Sub
    merci encore a tous.
    par contre je sollicite votre aide pour les deux ligne avec les ?????? dans mon programme.
    merci d'avance
    cedric.

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DernièreLigne = Range("A65535").End(xlUp).Row
    Si ta colonne A est celle dont la dernière cellule renseignée est bien sur le N° de ligne le plus élevé.

    Tu as aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DernièreLigne = Range("A1").End(xlDown).Row + 1
    Pour avoir la première ligne vide, si toutes les cellules de la colonne A sont renseignées (pas de trou dans les données)

    A+

  19. #19
    Membre expérimenté
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Par défaut
    Salut calimero91

    Voici une autre methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub PremiereLigneVide()
    'Si ta liste commence en A1
     Set tbl = Range("A1").CurrentRegion
     'cv est la premiere cellulevide de la colonne A
     Set cv = tbl.Offset(tbl.Rows.Count, 0).Resize(1, 1)
     Ligne = cv.Row
     
    End Sub
    J'utilise CurrentRegion car cela prend en compte tout mon tableau et avec
    offset et resize je peux facilement faire reference à n'importe quel endroit de ma liste.

    De plus si jamais une cellule genre A60000 est remplie par inadvertance si tu utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DernièreLigne = Range("A65535").End(xlUp).Row
    C'est foutu !!!

    Par contre avec currentregion il faut que toute les cellules de la colonne A de ta liste soit remplies !!!
    @+

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    CurrentRegion a le même inconvénient que
    DernièreLigne = Range("A1").End(xlDown).Row + 1
    si dans ta plage tu as des lignes vides.
    Donc la meilleure manière, c'est toi qui la choisis.
    Mais ma préférence va quand même à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DernièreLigne = Range("A1").End(xlDown).Row + 1


    Je trouve qu'une ligne vaut mieux que trois (salut bouley !)

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Affichage d'un contenu d'une cellule dans un tableau Userform
    Par Matrixmax dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/12/2012, 17h56
  2. [WD12] Probleme Affichage du contenu d'une combo
    Par jonas0 dans le forum WinDev
    Réponses: 4
    Dernier message: 18/07/2008, 08h50
  3. [AJAX] Rafraichir le contenu d'une div
    Par lelapinrusse dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/04/2008, 17h14
  4. [CSS] Probleme avec le contenu d'une boite avec IE
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/07/2006, 11h52
  5. [vb excel]Probleme affichage de contenu d'une array
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/09/2005, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo