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 :

gestion tableau sous word à l'aide d'une macro


Sujet :

VBA Word

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut gestion tableau sous word à l'aide d'une macro
    Bonjour,
    Comment gerer l'insertion de tableau dans word avec une macro sachant que le tableau excel possede deja des tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables(1).Cell(1, 7).Select
    Ceci ne marchera pas car il en choisira pas le bon tableau. Est il possible de faire une boucle ou autre en cherchant le tbaleau à l'aide de la premiere ligne du tableau est ke definir comme une varible.
    Je n'arrive aps à m'en sortir
    Cordialement

  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,

    J'ai pas très bien compris.

    Avec la ligne de code que tu nous donnes, c'est le premier tableau qui est utilisé.

    On peut faire une boucle sur les tableaux du document mais on doit savoir ce que l'on cherche.
    Une donnée texte ?
    Un autre tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim oTbl As Table
     
    For each oTbl in ActiveDocument.Tables
        If oTbl.Cell(1,1).Range.text = "Ce que je Cherche" Then
        ...
        End If
    Next oTbl
    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
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    Dans le tableau je cherche du texte, votre macro est ce que je cherche dans la premiere ligne du tableau je cherche le mot voiture. Apres avoir identifié le tableau je souhaite le supprimer du document.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub delete ()
    dim oTbl As Table
     
    For each oTbl in ActiveDocument.Tables
        If oTbl.Cell(1,1).Range.text = "voiture" Then
        Tables.delete
        End If
    Next oTbl
    End sub
    Malheuresement ce code ne marche pas. Je sais pas quelle erreur je fais. Il faut bien supprimer le tableau selection?
    Un grand merci pour votre aide.

  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,
    N'ayant pas pu le deviner, j'ai mis ce qu je pensais convenir.

    Lorsque le tableau est trouvé, il faut déterminer quelle est sa position dans le document.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub delete()
    Dim oTbl As Table
    Dim inti As Integer
     
     
    For Each oTbl In ActiveDocument.Tables
        If oTbl.Cell(1, 1).Range.Text = "voiture" Then
        oTbl.Select
        Selection.HomeKey unit:=wdStory, Extend:=wdExtend
        inti = slection.Tables.Count
        Tables(inti).delete
        End If
    Next oTbl
    End Sub
    Dans ce code, il faut que le mot voiture soit le seul de la cellule et il faut nettoyer le contenu de la cellule pour faire la comparaison.
    Une cellule contient deux caractères supplémentaires.

    http://heureuxoli.developpez.com/off...e=page6#L6-A-3
    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
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    je viens d'essayer la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub delete()
    Dim oTbl As Table
    Dim inti As Integer
    For Each oTbl In ActiveDocument.Tables
    If oTbl.Cell(1, 1).Range.Text = "voiture" Then
    oTbl.Select
    Selection.HomeKey unit:=wdStory, Extend:=wdExtend
    inti = slection.Tables.Count
    Tables(inti).delete
    End If
    Next oTbl
    End Sub
    Elle me met un message d'erreur : Erreur de compliation puis sub ou fonction non définie

    J'ai esdsaye de faire différente modification mais sans succés.
    Effectivement dans le tableau la case ne contient que le mot voiture

    En tout cas merci pour votre aide, c'est tres gentil

  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 faut ajouter ActiveDocument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables(intI).delete
    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
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,
    Je viens d'essayer les modification et malheureusement aucun tableau ne s'efface. Je ne comprends pas pourquoi. Faut il activer une references?
    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
     
    Sub delete()
    Dim oTbl As Table ( ne faut il pas rajouter un "s")
    Dim inti As Integer
     
     
    For Each oTbl In ActiveDocument.Tables
        If oTbl.Cell(1, 1).Range.Text = "voiture" Then
        oTbl.Select
        Selection.HomeKey unit:=wdStory, Extend:=wdExtend
        inti = slection.Tables.Count
        activedocument.Tables(inti).delete
        End If
    Next oTbl
    End Sub
    Dans mon tableau il n'y a que le mot voiture cell (1,1)
    Je ne vois pas d'où peu venir l'erreur vu mon niveau en macro

    merci

  8. #8
    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,

    Es-tu certain que le mot est trouvé ?
    Essaie de mettre un message ou un debug.print si le mot est trouvé.

    On peut faire autrement, mais plus complexe, faire une recherche globale et vérifier si le résultat est dans un tableau, si c'est le cas, on récupère le tableau et on l'efface, mais le tout est d'être certain d'avoir trouvé le tableau.
    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 !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    je vous envoie mon fichier. Je lance une macro à partir de excel (grace à vos conseil eclairé), je suis vraiment debutant en macro. J'ai quelque soucis de mise en forme comme vous pouvez le voir. J'ai 10 macros à lancer et je les appels à chaque fois. Ceci est un autre probleme.
    J'ai essaye de faire un
    J'ai essayé mais je ne suis pas arrivé à quelque chose de concluant. Pensez vous qu'il y a une erreur dans mon code.

    Si je n'arrive pas je serais obligé de compter le nombre de tableau dans mon document et supprimer les bons.

    Merci pour votre aide sans laquelle je n'aurai pas pu avancer mes macros
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    J'ai bidouillé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub tableau()
     
    If ActiveDocument.Tables(1).Cell(1, 1).Range.Text = Chr(13) & Chr(7) Then
    MsgBox "cellule vide"
    Else
    MsgBox "cellule non vide"
    End If
    End Sub

  11. #11
    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,

    Dans le lien que je te donne on y explique comment faire pour "extraire" un texte d'une cellule de tableau.

    On y trouve une petite fonction qui permet le nettoyage des deux caractère gènant se trouvant dans un cellule.
    Si tu n'utilises pas cette fonction, le texte ne sera jamais trouvé.

    http://heureuxoli.developpez.com/off...e=page6#L6-A-3
    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 !

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,
    Malgré de nombreux essai et votre aide. Je narrive pas à reconnaitre le mot 'voiture" dans la première ligne de mon tableau et supprimer ce tableau. Je ne comprends pas pourquoi. La macro devrait reconnaitre le terme et supprimer le tableau pourquoi ca plante.
    C'est dur de ne pas être un expert
    merci pour votre aide

    Petite complement. Dans mon fichier word je veux recuper dans une cellule word juste le text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("I2").Active Cell.Text.Select
    Selection.Paste
    Bien evidement avant j'appel le document excel pour que ca puisse marcher. Je n'arrive pas à copier que le text

  13. #13
    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,

    Je recommence, le liens que je donne pointe sur une fonction qui permet de récupérer le texte d'une cellule.

    On peut obtenir le contenu d'une cellule Word avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables(1).Cell(1,1).Range.Text
    Ça ne sert à rien d'essayer autre chose, ça ne fonctionnera pas.


    Lorsque l'on récupère le contenu par ce code, il comporte deux caractères supplémentaires pour délimiter la cellule.

    Si ces caractères ne sont pas éliminé pour le text de comparaison, le test sera toujours faux.
    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 !

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    J'ai bien regardé la solution que vous proposez mais je n'arrive pas à la mettre en oeuvre. Si j'utilise la macro precedement en recuperant le text de la cellule 1 et que je la compare. Pourquoi celle ci ne fonctionnera pas????
    J'ai regarder le liens que vous me conseiller avec la fonction debug. print mais je n'arrive pas à réaliser la macro.
    Merci quand meme

  15. #15
    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,

    Ça ne fonctionne pas parce que lors de la comparaison, on compare deux mot qui si ils sont identiques au premier coup d'oeil ne le sont pas lorsque l'on place l'un de ces mots dans un tableau.

    Essaie de faire un Len() sur le contenu d'une cellule et tu verras qu'il y a deux caractères supplémentaires.
    Il faut les supprimer pour faire une comparaison.

    Essaie avec une simple lettre "A" et mesure sa longueur avec un len et tu verras que tu auras 3 caractères.
    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 !

Discussions similaires

  1. Gestion de tableau sur word a partir d'une macro sur Excel
    Par saninx dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/03/2015, 09h23
  2. Dimensionner tableau word à l'aide d'une macro
    Par yannick113 dans le forum VBA Word
    Réponses: 4
    Dernier message: 07/12/2010, 11h14
  3. Réponses: 2
    Dernier message: 28/06/2007, 08h23
  4. Manipulation d'un tableau sous Word avec vba
    Par Françoise Sagan dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/12/2006, 13h54
  5. Insérer un tableau sous Word depuis Delphi
    Par muquet dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 11h59

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