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 :

Macro pour tableau dans Word


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut Macro pour tableau dans Word
    Bonjour,

    Je cherche a réaliser une macro permettant de détecter dans un tableau le caractère "*", et si il est trouvé, rajouter au début du tableau des cases vides dans lequels je rajouterai ensuite un en-tête.

    Lors d'une question sur un autre forum, on m'avait conseillé le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Selection.Find.ClearFormatting
    With Selection.Find
    .Text = "*"
    .Replacement.Text = ""
    .Wrap = wdFindContinue
    End With
    Selection.Find.Execute
    While Selection.Find.Found
    Selection.InsertRowsAbove 1
    Selection.Find.Execute
    Wend
    Mais il y a un probleme dans cette macro, c'est que qd j'ai plusieurs caractères "*", je rentre dans une boucle infinie et Word me rajoute sans arret des lignes.
    J'ai l'impression (quand je ne met qu'un seul "*" et que ca marche) que c'est parce que le "*" n'est pas supprimé et donc il rajoute toujours une nouvelle ligne.
    Le problème c'est que normalement il y a la commande Replacement.Text = "" pour supprimer le *, mais visiblement ca ne fait rien.

    Vous auriez une idée ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce "*" peut-il être dans n'importe quelle cellule du tableau ou dans un cellule précise.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Le "*" peut etre dans n'importe quelle cellule (enfin il serait dans la 1ere colonne, mais il peut y avair plusieurs tableaux)

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Essaies ce morceau 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
     
    Sub AjouterLigneTableau()
    Dim oTbl As Table
     
    For Each oTbl In ActiveDocument.Tables
        oTbl.Select
        With Selection.Find
            .Text = "*"
            .Forward = True
     
        End With
        Selection.Find.Execute
        If Selection.Find.Found Then Selection.InsertRowsAbove 1
     
        Debug.Print Selection.Find.Found
    Next oTbl
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Merci ! votre code marche bien, mais il rajoute des lignes juste au dessus du caractere *. Moi (mais j'avais oublié de le préciser) je voudrais en rajouter que si c'est la case de plus haut niveau qui a un "*")

    A partir de votre code, j'ai essayé le code suivant:

    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
    Sub AjouterLigneTableau()
    Dim oTbl As Table
     
    For Each oTbl In ActiveDocument.Tables
        oTbl.Select
        With Selection.Find
            .Text = "*"
            .Replacement.Text = ""
            .Forward = True
     
        End With
        Selection.Find.Execute
        If Selection.Find.Found Then
            Selection.MoveUp
            If Selection.Find.Text = "" Then
                Selection.InsertRows
                Selection.TypeText Text:="Colonne1"
                Selection.MoveRight Unit:=wdCharacter, Count:=1
                Selection.TypeText Text:="Colonne2"
                Selection.MoveRight Unit:=wdCharacter, Count:=1
                Selection.TypeText Text:="Colonne3"
            End If
        End If
     
        Debug.Print Selection.Find.Found
    Next oTbl
     
    End Sub
    Mais ca ne me donne plus rien
    Comment est ce que je pourrai arranger ca ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    il donne rien, mais ne ressemble à rien non plus

    Essaie comme çà :

    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
     
    Sub AjouterLigneTableau()
    Dim intT As Integer
     
     
    For intT = 1 To ActiveDocument.Tables.Count
     
        ActiveDocument.Tables(intT).Select
        With Selection.Find
            .Text = "*"
            .Forward = True
     
        End With
        Selection.Find.Execute
        If Selection.Find.Found Then ActiveDocument.Tables(intT).Rows.Add ActiveDocument.Tables(intT).Rows(1)
     
     
        Debug.Print Selection.Find.Found
    Next intT
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    je réponds un peu tard, mais merci beaucoup !

  8. #8
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut NouvelInscrit,

    Si ton problème est résolu, cliques sur le bouton , ça permet à d'autres DVPnautes de savoir qu'il y a une réponse et ça nous évite de répondre plusieurs fois la même chose (enfin en théorie).

    @+

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

Discussions similaires

  1. [WD-2003] Macro cherchant du text ss Excel pour copie dans word
    Par yannick113 dans le forum VBA Word
    Réponses: 0
    Dernier message: 21/12/2010, 09h53
  2. Macro de recherche dans WORD
    Par damall dans le forum VBA Word
    Réponses: 11
    Dernier message: 25/08/2007, 11h13
  3. Tableau dans Word + Fichier Excel
    Par dado91400 dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/07/2007, 19h57
  4. [VB.NET]Générer tableau dans Word !!
    Par mhamdi45 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/07/2006, 17h20
  5. dessiner un tableau dans WORD?
    Par sali dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/01/2005, 14h11

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