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 :

Exporter résultats cases à cocher formulaire word dans excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut Exporter résultats cases à cocher formulaire word dans excel
    Bonjour à tous,

    J’ai des champs case à cocher crées avec la barre d’outil formulaires, dans un questionnaire de satisfaction nommé 1.doc., dans mon fichier 2010 sur le bureau, d’autre seront crées, 2.doc… je ne sais combien il y en aura au final. Certains champs sont remplies avec du texte, d’autres avec des chiffres et le plus avec des croix ou pas.

    Je voudrais que les champs de tous les résultats de ces champs alimentent une feuille Excel (nommée récap satisfaction.xls) qui se trouve au même emplacement qu’eux (2010).

    Remplissage sous forme de 1 si X, 0 si 0, de texte si c’est du texte ou de chiffre si c’est du chiffre, automatiquement à chaque fois qu’un formulaire est enregistré dans 2010, sans rien ouvrir. Le recueil des champs sera fait de B4 à AF4 pour le formulaire 1, B5 à AF5 pour le formulaire 2.

    J’ai cherché une pièce jointe sur plusieurs sites mais j’arrive pas à me débrouiller sur ce coup là.

    Quelqu’un a-t-il souvenir d’un VBA déjà posté dans le genre de ma demande et correspondant mieux que ce que j’ai trouvé ci-dessous.

    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
    Option Explicit
     
    'comment copier une ligne précise d'un tableau word et la coller dans excel?
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
     
    Set WordApp = CreateObject("word.application")
    WordApp.Visible = False 'Word reste masqué pendant l'opéraion
    Set WordDoc = WordApp.Documents.Open("monDocument.doc") 'ouvre le document Word
     
    'copies la 3eme ligne de la 1ere table Word
    WordDoc.Tables(1).Rows(3).Range.Copy
     
    'collage dans Excel
    Range("A1").PasteSpecial xlPasteValues
     
    WordDoc.Close 'fermeture document Word
    WordApp.Quit 'fermeture session Word

    Je vous remercie tous infiniment d’avance.

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    Bonsoir,

    Finalement j'essaye plutôt d'adapter ce code trouvé qui fonctionne bien pour sa requête originale.

    Mais en rouge les petits soucis que je rencontre pour mon modèle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub btnUSF_Click()
    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
    ‘est-ce que « btnUSF » veut dire uniquement les Cases texte hors j’ai besoin de récupérer aussi les informations des champs case à cocher (oui/non)
    Dim Wd As Word.Application
    Dim Chemin As String
    Dim i As Byte
    ActiveSheet.Range("B4:AF4").ClearContents 
    'les informations sont bien récupérées sur la ligne 4 mais pas à partir de la colonne B
    'Créer une instance de l'objet
    Set Wd = New Word.Application
    Chemin = ThisWorkbook.Path
    With Wd
    'Empêche Word de s'afficher à l'ouverture
    .Visible = False
    .documents.Open (Chemin & "\1.doc")
    ‘comment faire pour que le code reprenne les documents du n° 1 à l’infini sans les énumérer dans documents.Open (Chemin & "\1.doc") ?
    'Place les valeurs des 31 champs Word dans la feuille Excel.
    For i = 1 To 31
    Cells(4, i).Value = .ActiveDocument.Fields(i).Result
    Next i
    'Ferme le document Word
    .Quit False
    End With
    Set Wd = Nothing
    End Sub


    Merci à vous de m’aider

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    Bonjour à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        .documents.Open (Chemin & "\1.doc")
    Je ne sais pas comment je dois écrire cette ligne pour que tous mes documents word de mon fichier soit pris en compte sans les énumérer et que le informations s'ajoutent les unes sous les autres dans excel.

    J'ai essayé avec Derlig = Derlig + 1 que j'ai lu sur le site mais je suis pas douée et ça n'a pas fonctionné. Une piste SVP.

    Besoin de votre aide

    Merci

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    Je ne sais pas comment je dois écrire cette ligne pour que tous mes documents word de mon fichier soit pris en compte sans les énumérer
    Regarde l'aide sur DIR. il y a un exemple avec normallement, avec boucle et tout le toutim..

    et que le informations s'ajoutent les unes sous les autres dans excel.
    Dans ton cas, il serait simple de travailler avec comme indice une variable numéro de ligne (ex Ligne_nr) que tu initialises à 0 avant ta boucle de lecture des fichier Word (voir Dir) et tu modifies la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(4, i).Value = .ActiveDocument.Fields(i).Result
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ligne_Nr =Ligne_Nr +  1
    Cells(4, Ligne_Nr).Value = .ActiveDocument.Fields(i).Result
    C'est tout je crois.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    merci Godzestla,
    mais c'est quoi l'aide DIR

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ce n'est pas l'aide DIR, c'est chercher dans l'aide dans VBA sur la fonction DIR.

    Ne me dis pas que tu ne connais pas l'aide ?

    Allez, je suis bon prince, c'est jeudi, je te sers même sur un plateau l'exemple de l'aide sur la fonction DIR. C'est bientôt Noël, alors....
    Dir Function Example
    This example uses the Dir function to check if certain files and directories exist. On the Macintosh, “HD:” is the default drive name and portions of the pathname are separated by colons instead of backslashes. Also, the Microsoft Windows wildcard characters are treated as valid file-name characters on the Mac. However, you can use the MacID function to specify file groups.

    Dim MyFile, MyPath, MyName
    ' Returns "WIN.INI" (on Microsoft Windows) if it exists.
    MyFile = Dir("C:\WINDOWS\WIN.INI")

    ' Returns filename with specified extension. If more than one *.ini
    ' file exists, the first file found is returned.
    MyFile = Dir("C:\WINDOWS\*.INI")

    ' Call Dir again without arguments to return the next *.INI file in the
    ' same directory.
    MyFile = Dir

    ' Return first *.TXT file with a set hidden attribute.
    MyFile = Dir("*.TXT", vbHidden)

    ' Display the names in C:\ that represent directories.
    MyPath = "c:\" ' Set the path.
    MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
    Do While MyName <> "" ' Start the loop.
    ' Ignore the current directory and the encompassing directory.
    If MyName <> "." And MyName <> ".." Then
    ' Use bitwise comparison to make sure MyName is a directory.
    If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
    Debug.Print MyName ' Display entry only if it
    End If ' it represents a directory.
    End If
    MyName = Dir ' Get next entry.
    Loop
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    Merci, mais petite précision c'est du charabia pour moi. Je viens juste de relire aussi "la gestion des boucles par SilkyRoad". Je ne sais même pas laquelle choisir... J'aimerais bien pourtant être efficace dans ce domaine.
    Voilà je suis ravie parce que mon projet de questionnaire de satisfaction est presque fini et va me simplifier la vie par rapport à la manière dont je saisissais ces fiches avant et cela grâce à la personne qui a travaillée sur le code ci-dessous. Je voulais juste que l'on puisse voir ce que je ne saurais écrire et qui me manque.

    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
    Private Sub btnUSF_Click()
    Dim Wd As Word.Application
    Dim Chemin As String
    Dim i As Byte
    ActiveSheet.Range("B4:AF4").ClearContents 
    'les informations sont bien récupérées sur la ligne 4
    ' mais pas à partir de la colonne B?
    'Créer une instance de l'objet
    Set Wd = New Word.Application
    Chemin = ThisWorkbook.Path
    With Wd
    'Empêche Word de s'afficher à l'ouverture
    .Visible = False
    .documents.Open (Chemin & "\1.doc")
    ‘que le code reprenne les documents du n° 1 à l’infini sans les énumérer dans documents.Open (Chemin & "\1.doc") 
    'Place les valeurs des 31 champs Word dans la feuille Excel.
    For i = 1 To 31
    Cells(4, i).Value = .ActiveDocument.Fields(i).Result
    'que tous les documents s'inscrivent à la suite les uns des autres
    Next i
    'Ferme le document Word
    .Quit False
    End With
    Set Wd = Nothing
    End Sub
    Dans ce tableau j'ai quelques autres soucis que je pense pouvoir me débrouiller.

    Merci encore à vous de m'aider

  8. #8
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    erci, mais petite précision c'est du charabia pour moi. Je viens juste de relire aussi "la gestion des boucles par SilkyRoad". Je ne sais même pas laquelle choisir... J'aimerais bien pourtant être efficace dans ce domaine
    Re,

    désolé pour toi, mais si tu ne maitrises pas les bases du VBA, comment veux-tu arriver à produire quelquechose d'un peu cohérent.

    C'est comme si je voulais me mettre à vendre des pizzas, mais que je ne veux pas prendre la peine d'apprendre à faire la pâte. ce n'est pas gagné

    Pour ma part, très très vite analysé, tus à toute la solution dans ce que tu donnes et mes réponses.

    Ta boucle for est bonne si tu as effectivement 31 fichiers.
    La boucle sur Dir est expliquée dans l'aide. c'est une boucle do While, qui signifie fait le traitement tant qu'une condition est remplie, à savoir ici tant que la fonction Dir retourne quelquechose ( Myname <>"")
    Si tu appliques la modif suggérée, à savoir ctr de liogne mis à zéro avant la boucle Do While + le remplacement de ta ligne Cells par mes 2 lignes, cela devrait fonctionner.

    Je te conseille donc d'un peu piocher la matière, c'est nécessaire, puis de revenir avec un code que tu as un peu plus ébauché, si tu as encore des difficultés.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    J'ai copié ce qui se trouve en rouge mais cela doit être mal fait pour mon projet car "Private Sub btnUSF_Click()" se met en jaune, le code ne comprend pas ImportText mais je ne sais pas quoi mettre.

    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
    Private Sub btnUSF_Click()
    Dim Wd As Word.Application
    Dim Chemin As String
    Dim i As Byte
        ActiveSheet.Range("A4:AF4").ClearContents
        'Créer une instance de l'objet
        Set Wd = New Word.Application
        Chemin = ThisWorkbook.Path
        With Wd
            'Empêche Word de s'afficher à l'ouverture
            .Visible = False
     
             'Répertoire contenant les fichiers
       Chemin = "Bureau\2010-2"
       Fichier = Dir(Chemin & "\*.txt")
     
       'Boucle sur les fichiers
       Do While Fichier <> ""
     
          i = Range("A65536").End(xlUp).Row + 1
           ImportText Chemin & "\" & Fichier, Cells(i, 1)
     
           Fichier = Dir
       Loop
             
             'Place les valeurs des 31 champs Word dans la feuille Excel.
            For i = 1 To 31
                Cells(4, i).Value = .ActiveDocument.Fields(i).Result
            Next i
            'Ferme le document Word
            .Quit False
        End With
        Set Wd = Nothing
    End Sub

Discussions similaires

  1. Réponses: 27
    Dernier message: 20/01/2010, 11h39
  2. Formulaire et cases à cocher avec Word 2003
    Par 92_Pascal dans le forum Word
    Réponses: 15
    Dernier message: 01/09/2009, 14h46
  3. Export Formulaire Graphique dans Excel
    Par kenobyalex dans le forum VBA Access
    Réponses: 10
    Dernier message: 25/03/2008, 11h41
  4. [Conception] formulaire et case à cocher et recherche dans une base de donnée
    Par olivier_1970 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/06/2006, 01h03
  5. Exporter formulaire Access dans Excel
    Par teti_chenille dans le forum Access
    Réponses: 6
    Dernier message: 28/02/2006, 17h40

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