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

Word Discussion :

Remontée champs formulaire word dans excel


Sujet :

Word

  1. #21
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    On s'est bien compris alors.

    Je teste

  2. #22
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Une solution consisterait à travailler avec une table d'association, dans Excel. Table qui indiquerait la position de la ligne et de la colonne dans le tableau Excel, et le nom du champ Word et son indice dans Word.

  3. #23
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Alors je ne sais pas du tout faire cela.

    Là j'ai un petit souci avec ton code, Mes champs i de Word remplissent mes cellules ligne par ligne dans Excel (ligne,j).

    Le problème est que dans mon précédent code, i était toujours égal à j et je n'ai pas différencié les 2, excel remplissait toutes les cellules (ligne,i) avec tous les champs de word i.

    La il faudrait que je passe à remplir avec les champs Word de 1 à 130 sauf 4 à 6 chaque cellule de (ligne,j) de 1 à 127.

    Si je suis clair dans mes propos

  4. #24
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Dans les faits, je me retrouve avec un code comme suit:

    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
     For i = 1 To 127
                    Select Case i
                           Case 1 To 3, 7 To 127
     
        Cells(ligne, i) = FichierWord.ActiveDocument.FormFields(i).Result
     
     
     
       If i >= 8 Then
     
        If Not IsNumeric(Cells(ligne, i).Value) Or Cells(ligne, i).Value = "" Then
                        Cells(ligne, i).Value = Cells(ligne, i).Value
                    Else
     
     
                        Cells(ligne, i).Value = CDbl(Cells(ligne, i).Value)
     
     
                  End If
                  Else
     
        End If
     
        Next i
       Case Else
                               ' Suite du code
       End Select

    et Excel me répond constamment Next sans For

  5. #25
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Le me sert à corriger quelque chose qui n'a rien à voir et concernerait plutôt "j" dans le cas présent

  6. #26
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    C'est normal, la boucle For est imbriquée dans le Select.

  7. #27
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Même avec seulement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For i = 1 To 127
                    Select Case i
                           Case 1 To 3, 7 To 127
     
        Cells(ligne, i) = FichierWord.ActiveDocument.FormFields(i).Result
     
     
     
     
     
     Next i
    J'ai "Next sans For"

  8. #28
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Ok il doit être après le End Select

  9. #29
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    J'ai réglé ça.
    $J'obtiens bien le décalage auquel je pensait, les colonnes correspondants à 4; 5; 6 sont vides et tout est décalé sur la droite.

    Mais je sens qu'on est pas loin

  10. #30
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    J'essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 1 To 127
                    Select Case i
                           Case 1 To 3, 7 To 127
     For j = 1 To j = 127
        Cells(ligne, j) = FichierWord.ActiveDocument.FormFields(i).Result
     
     Next j
     Case Else
                               ' Suite du code
                    End Select
     
     
     Next i
    Et rien ne se rempli

  11. #31
    Invité
    Invité(e)
    Par défaut
    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
     
    Sub CreerUneTableDeCorrespondance(ByVal CheminComplet As String)
     
    Dim ShTable As Worksheet
    Dim I As Long
     
    Dim AppWord As Word.Application
    Dim DocWord As Word.Document
     
     
        Set ShTable = Sheets.Add
        Set AppWord = CreateObject("word.application")
     
        With AppWord
             .Visible = True
             Set DocWord = .Documents.Open(Filename:=CheminComplet, ReadOnly:=True)
             For I = 1 To DocWord.FormFields.Count
                 With ShTable
                        .Cells(I + 1, 3) = DocWord.FormFields(I).Name
                        .Cells(I + 1, 4) = DocWord.FormFields(I).Range.Text
                        .Cells(I + 1, 5) = I
                 End With
             Next I
             DocWord.Close savechanges:=False
             .Quit
        End With
     
        Set AppWord = Nothing
        Set ShTable = Nothing
     
    End Sub
     
     
    Sub TestCreerUneTableDeCorrespondance()
     
        CreerUneTableDeCorrespondance "C:\.....\XXXXX.docm" à adapter.
     
    End Sub
    En admettant que les deux premières colonnes correspondent aux coordonnées ligne, colonne de vos cellules à mettre à jour, vous pourriez vous baser sur la colonne E pour mettre à jour vos cellules.

  12. #32
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Il est complètement impossible de tourner mes i et j?

  13. #33
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Le fichier excel est déjà en place et il est très lourd....
    Je vais travailler ton nouveau code pour l'année prochaine

  14. #34
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Il est complètement impossible de tourner mes i et j?
    L'onglet comporte 130 colonnes ?

  15. #35
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Et bien d'autres encore, c'est une base et des calculs

  16. #36
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Pour une mise à jour à partir d'un seul fichier
    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
     
    Sub MettreAJourUneLigne()
     
    Dim ShFiche As Worksheet
    Dim I As Long, NouvelleLigne As Long
    Dim CheminComplet As String
     
    Dim AppWord As Object 'Word.Application
    Dim DocWord As Object 'Word.Document
     
        Set ShFiche = Sheets("RECUP")
        With ShFiche
            NouvelleLigne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        End With
     
        Set AppWord = CreateObject("word.application")
        With AppWord
             .Visible = True
     
             CheminComplet = "C:\...\XXXXXXX.docm" ' A adapter
             Set DocWord = .Documents.Open(Filename:=CheminComplet, ReadOnly:=True)
             With ShFiche
                    For I = 1 To 130
                        Select Case I
                               Case 1 To 3
                                    .Cells(NouvelleLigne, I) = DocWord.FormFields(I).Range.Text
                               Case 7 To 130
                                   .Cells(NouvelleLigne, I) = DocWord.FormFields(I - 3).Range.Text
                        End Select
                    Next I
             End With
             DocWord.Close savechanges:=False
             Set DocWord = Nothing
             .Quit
        End With
     
        Set AppWord = Nothing
        Set ShFiche = Nothing
     
    End Sub

  17. #37
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For I = 1 To 130
                        Select Case I
                               Case 1 To 3
                                    .Cells(NouvelleLigne, I) = DocWord.FormFields(I).Range.Text
                               Case 7 To 130
                                   .Cells(NouvelleLigne, I - 3) = DocWord.FormFields(I ).Range.Text
                        End Select
    PARFAIT!!!!!

  18. #38
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    J'ai juste encore un problème qui perdure.

    Les valeurs dans les champs, bien que numérique dans word, ne remonte pas de façon numérique dans Excel, j'utilise donc un code pour les "numériser" pour pouvoir procéder à mes calculs or, cela ne fonctionne plus, la conversion ne se fait plus et mes cellules restent remplies avec de chiffres stockés au format texte.

    D'où vient la chose?

    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
    For i = 1 To 127
                    Select Case i 
     
     Case 1 To 3
        Cells(ligne, i) = FichierWord.ActiveDocument.FormFields(i).Result
     Case 7 To 130
     Cells(ligne, i - 3) = FichierWord.ActiveDocument.FormFields(i).Result
     Case 7 To 130
     Cells(ligne, i - 3) = FichierWord.ActiveDocument.FormFields(i).Result
      If i >= 8 Then
     
        If IsNumeric(Cells(ligne, i).Value) Or Cells(ligne, i).Value = "" Then
                        Cells(ligne, i).Value = Cells(ligne, i).Value
                    Else
     
     
                        Cells(ligne, i).Value = CDbl(Cells(ligne, i).Value)
                  End If
                  Else
     
        End If
     
                    End Select
     
     
      Next i

  19. #39
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Case 7 To 130 est répété, cela n'est pas possible.

    Sinon, ce serait mieux avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Case 1 To 3
        Cells(ligne, i) = FichierWord.ActiveDocument.FormFields(i).Result
     Case 7 
     Cells(ligne, i - 3) = FichierWord.ActiveDocument.FormFields(i).Result
     Case 8 To 130
     Cells(ligne, i - 3) = cdbl(FichierWord.ActiveDocument.FormFields(i).Result)

  20. #40
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For I = 1 To 130
                        Select Case I
                               Case 1 To 3
                                    .Cells(NouvelleLigne, I) = DocWord.FormFields(I).Range.Text
                               Case 7 To 130
                                   .Cells(NouvelleLigne, I - 3) = DocWord.FormFields(I ).Range.Text
                        End Select
    PARFAIT!!!!!
    Comment est-ce possible si ton document est le même que celui que tu m'as transmis ? Il n'y a que 127 champs.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [XL-2007] Problème pour récupérer un champ Word dans excel
    Par Jackfly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/04/2013, 09h45
  2. Réponses: 10
    Dernier message: 23/03/2011, 00h40
  3. Réponses: 27
    Dernier message: 20/01/2010, 12h39
  4. [XL-2003] Exporter résultats cases à cocher formulaire word dans excel
    Par macat dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/12/2009, 16h54
  5. Réponses: 3
    Dernier message: 26/08/2009, 19h25

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