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

VBA Word Discussion :

Champ sur word > Saisie automatique signet selon tableau Excel


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut Champ sur word > Saisie automatique signet selon tableau Excel
    Bonjour le forum,

    Je débute un peu en formulaire Word. J'ai un fichier word dont j'aimerais que plusieurs signets se remplissent automatiquement selon un champ que je remplis au début et dont les informations issu de ce champ sont présentes sur un fichier excel.

    Dans l'idée :
    Page 1 : en mode formulaire je renseigne une chaine de caractère
    Sur un fichier excel, j'ai un tableau dans lequel une collonne dispose de la cellule correspond à cette chaine de caractères
    Sur les autres pages : J'ai plusieurs signets qui prennent la valeur correspondant à une colonne donnée sur la même que ma chaine de caractère (fonction recherchex quoi)

    J'arrive à faire une petite macro de recherche sur mon fichier excel et une autre sur mon word, il faudrait maintenant que mes variables soit connectées et lancées depuis word

    Sur word mon "immat" est renseigné dans un formulaire texte, je le récupère en immat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox ActiveDocument.FormFields("immat").Result
    End Sub
    Sur excel (si je tape l'immat en dur pour l'instant):
    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
    Sub JeRecherche()
    Dim Ligne As Integer
     
    immat = "201907009"
     
    For Ligne = 3 To Range("m99999").End(xlUp).Row
     
        If Range("M" & Ligne) = immat Then
     
            NCC = Range("c" & Ligne)
            MsgBox NCC
            Exit Sub
     
        End If
     
    Next Ligne
    MsgBox "Immat non trouvée"
    End Sub
    Faudrait ensuite que je comprenne comment récupérer ce NCC est l'inscrire dans un signet.

    Dans l'idéal j'aimerai aussi que des images se modifient selon cette chaine de caractère.

    Merci !

  2. #2
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    Ok, je parviens à faire ma recherche sur excel depuis word.
    J'obtiens les bonnes données mais je ne parviens ni à obtenir la données initial immat dans le signet, seulement les caractères qui suivent, ni à écrire la valeur obtenue du signet

    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
    texte1 = ActiveDocument.Range(ActiveDocument.Bookmarks("immat").Range.Start, ActiveDocument.Bookmarks("immat").Range.End)
    Texte2 = ActiveDocument.Range(ActiveDocument.Bookmarks("NCC").Range.Start, ActiveDocument.Bookmarks("NCC").Range.End)
    texte = ActiveDocument.Range(ActiveDocument.Bookmarks("immat").Range.Start, ActiveDocument.Bookmarks("NCC").Range.End)
    texte3 = Replace(Replace(Replace(texte, texte1, ""), "FORMTEXT", ""), vbLf, "")
    texte5 = Replace(Texte2, "FORMTEXT ", "")
    Texte6 = Replace(Texte2, texte5, "")
    immat = Mid(texte3, 3, Len(Texte6))
    Set DocExel = CreateObject("excel.application")
        Set Wkb = DocExel.Workbooks.Open(ActiveDocument.Path & "\" & "Classeur1.xlsx")
    DocExel.Visible = True
    With Wkb
    ligne = 0
    On Error Resume Next
    ligne = .Sheets("Feuil1").Columns("M:M").Find(What:=immat, After:=.Sheets("Feuil1").Range("M2"), LookIn:=Xlvalues, LookAt:=xlwhole).Row
    If ligne > 0 Then
    NCC = .Sheets("Feuil1").Range("C" & ligne)
    Else
    NCC = ""
    End If
    End With
    Wkb.Close True
    DocExel.Quit
    Selection.GoTo What:=wdGoToBookmark, Name:="NCC"
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove
    Selection.TypeText Text:=NCC
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    SVP le forum, j'ai besoin d'aide, je pense que ça doit pas être bien compliqué.
    Il me faudrait juste le début pour que je puisse continuer

    Une autre façon de faire serait de créer un onglet sur le Excel avec les rechercheX et j'ai plus qu'à dire A1 = immat et ensuite mes autres signets = valeur de B1, C1, etc

  4. #4
    Membre régulier
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Points : 71
    Points
    71
    Par défaut
    Ok ! Je tiens quelque chose !
    Sur mon fichier excel je prépare les données à récupérer sur un autre onglet (avec des rechercheX)
    Ensuite je modifie la valeur de mes champs texte avec signet selon la valeur du fichier Excel.

    Il faut juste que j'arrive à écrire le contenu du signet immat dans la cellule B2
    Egalement je ne sais pas comment mettre à jour tous les champs par VBA

    (Je parviens pas à uploadé mon fichier word)
    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
    Sub Traitement()
     
    Set DocExel = CreateObject("excel.application")
        Set Wkb = DocExel.Workbooks.Open(ActiveDocument.Path & "\" & "Classeur1.xlsx")
    DocExel.Visible = True
    With Wkb
    i = 2
    Do While .Sheets("Feuil1").Range("A" & i) <> ""
    signet = .Sheets("Feuil1").Range("A" & i)
    Donnée = .Sheets("Feuil1").Range("B" & i)
    ActiveDocument.FormFields(signet).Result = Donnée
    'ActiveDocument.Bookmarks(signet).Range.InsertAfter "-" & Donnée
    i = i + 1
    Loop
    End With
    Wkb.Close True
    DocExel.Quit
     
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Tri automatique d'un tableau Excel
    Par damography dans le forum Excel
    Réponses: 5
    Dernier message: 12/08/2015, 09h32
  2. Réponses: 6
    Dernier message: 06/03/2007, 00h06
  3. saisie automatique pour un champs
    Par god0126 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2006, 10h57
  4. Réponses: 2
    Dernier message: 13/06/2006, 17h12
  5. remplissage cellule automatique sur une donnée saisie !
    Par ptitlulu94 dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2006, 15h06

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