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 :

Récupérer des valeurs dans excel pour générer un tableau sous word (vba) [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut Récupérer des valeurs dans excel pour générer un tableau sous word (vba)
    Bonjour la communauté !

    Je pêche depuis plusieurs jours sur la récupération de données excel à injecter dans un fichier word, du coup j'en finis par un appel à l'aide.

    J'ai un fichier excel rempli de différentes valeurs (un suivi d'actions) et je souhaiterai générer un ordre du jour automatiquement sous word découpé en 3 sous sections, les actions en retard, les actions en cours, les nouvelles actions.

    Pour ça j'ai une colonne de mon fichier excel (H) qui donne l'état des actions (en retard, en cours, nouvelle). DU coup je voudrais pour chaque état d'actions recuperer les infos de la ligne correspondante et les coller sous forme de tableau dans word.

    Je suppose qu'il faut arriver à faire une recherche verticale sur la colonne H pour récupérer les infos de la ligne correspondante et l'afficher dans le bon paragraphe word (avec un signet ?)

    Merci d'avance pour le coup de main
    Guigus

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Un publipostage.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il y a sans doute de nombreuses façons de procéder pour faire ça.
    Voici comment je ferrais.

    A la main, créer un document Word "type" contenant tes trois rubriques avec chacune un tableau ne contenant qu'une ligne vide (qui servira de modèle).

    Ta macro commence par ouvrir ce document type et l'enregistrer sous un autre nom ou dans un autre répertoire, pour garder le fichier type intact (pour une prochaine utilisation).
    Ensuite, une boucle For To scrute toutes les lignes de ton tableau Excel.
    En fonction de la valeur dans la colonne H, elle ajoute une ligne au tableau Word correspondant par copie de la dernière ligne.
    Elle remplie l'avant-dernière ligne du tableau Word en utilisant des variables String pour passer les données d'Excel (avec la propriété Text et non Value) à Word.
    Après le Next de la boucle, elle supprime la dernière ligne (vide) de chacun des trois tableaux Word.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    bonjour,

    merci pour ces premiers éléments de réponse.

    n'étant pas une fleche en VBA je vais voir si le publipostage (que je ne connais pas) peut répondre a mon attente.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    Bon le publipostage ne me convient pas du coup je me lance a corps perdu dans VBA

    Voici mon premier bout de code

    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
    Private Sub CommandButton5_Click()
     
     Dim AppWord As Word.Application
     Dim DocWord As Word.Document
     Dim oBm As Word.Bookmark
     Dim Folder As String, DocName As String, BookMarkName1 As String
     
     
     Set AppWord = New Word.Application
     
     Folder = ThisWorkbook.Path
     DocName = "RADSECR.docx" ' Nom du document Word
     BookMarkName1 = "Signet1" ' Nom du signet
     
     Application.DisplayAlerts = True
     
     With AppWord ' Ouvre le document Word
      .Visible = True
        Set DocWord = .Documents.Open(Folder & "\" & DocName, ReadOnly:=False)
     End With
     
     
     Dim i, x As Long
     Dim Soldé As String
     x = Cells(1, 8).End(xlDown).Row 'Colonne H
     
     For i = 1 To x 'On boucle pour chercher un état en colonne H et on recopie la ligne dans le signet correspondant du doc word
     If Cells(i, 8).Value = Soldé Then Rows(ActiveCell.Row & ":" & ActiveCell.Row).Select
     Selection.Copy
     Set oBm = DocWord.Bookmarks(BookMarkName1)
     oBm.Range.PasteExcelTable False, False, False
     
     Next i
     
    End Sub
    Bon 1er problème c'est que la macro balaye la colonne H, mais elle copie uniquement la cellule que j'ai sélectionné juste avant de lancer le code, et elle me recopie 8 fois ce qu'il y a dans cette cellule sélectionnée dans mon word (le signet marche bien en tout cas).
    Ma boucle n'est pas bonne, et je comprend mon erreur car il va juste lire en colonne H si il voit une cellule a l'état Soldé et il me copie la cellule active (qui peut être n'importe laquelle)
    Une idée pour me remettre dans le droit chemin ?

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       Dim i As Long
     
       Set oBm = DocWord.Bookmarks(BookMarkName1)
       For i = 1 To Cells(1, 8).End(xlDown).Row
          If Cells(i, 8).Value = "Soldé" Then 
             oBm.Range.Text = Cells(i, 1).Text & Cells(i, 2).Text & Cells(i, 3).Text
          End If 
      Next i
    La ligne 6 est certainement à modifier mais comme tu ne dis pas quelles cellules tu souhaites copier, difficile de faire mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des valeurs dans un autre fichier excel fermé
    Par dominiqued dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/05/2014, 13h07
  2. Réponses: 7
    Dernier message: 10/01/2013, 17h39
  3. Réponses: 13
    Dernier message: 09/11/2011, 13h06
  4. Réponses: 6
    Dernier message: 28/12/2007, 23h34
  5. Récupérer des données dans excel
    Par alexia2 dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 16h34

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