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 :

Accès aux formes de cellules d'un tableau


Sujet :

VBA Word

  1. #1
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut Accès aux formes de cellules d'un tableau
    Bonjour à toutes et tous;

    Je dois imprimer un lot d'étiquettes, et j'ai donc récupéré un modèle depuis le site du fabricant d'étiquettes (cf document joint).
    Par contre comme chaque étiquette est différente je voudrais passer par des formulaires me permettant la saisie des données à faire figurer sur les étiquettes.
    Je connais VBA Excel, mais je ne connais pas VBA pour Word.

    Donc dans l'idée voilà ce que je voudrais faire :

    • Un premier formulaire pour la saisie de la première étiquette disponible, qui ensuite appelle l'affichage du deuxième formulaire.
    • Un deuxième formulaire pour la saisie des données de l'étiquette. A savoir un code couleur, un code élément, et les valeurs RGB de la couleur de fond pour l'étiquette, et mettre à jour l'étiquette. Puis ensuite, grâce à un bouton, réinitialiser les données et passer à la saisie de l'étiquette suivante. Et ainsi de suite.


    Je suis capable de maitriser les formulaires, le contrôle des données saisies, mais là ou cela se corse, c'est d'accéder à la bonne étiquette, puis de la remplir.
    C'est la première fois que je dois travailler un tableau sous Word.

    Vous verrez sur le fichier, que je joins au message, les étiquettes sont des formes, rondes avec une bordure rouge, placées dans chaque cellule du tableau matérialisant une page (format A4).

    JFC-Etiquettes.docx

    Quelqu'un aurait-il la gentillesse de m'expliquer comment je dois m'y prendre.
    Je ne demande pas de le faire à ma place mais de m'expliquer (avec un exemple pourquoi pas) comment résoudre mon problème.

    En attendant je vous remercie d'avance pour le temps que vous passerez à m'aider, et vous souhaite à toutes et tous une bonne journée.

  2. #2
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 346
    Points : 545
    Points
    545
    Par défaut
    Bonjour,

    Votre document a-t-il été retravaillé ? Certaines formes ne sont pas dans les bonnes cellules.

  3. #3
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour;
    Merci E KERGRESSE d'avoir jeté un œil sur mon problème.

    Ce document n'a pas été retouché, je l'ai téléchargé depuis le site du fabricant des étiquettes (Herma).
    En fait le tableau comporte 15 colonnes et 23 lignes, mais les colonnes et lignes paires sont très réduites.

    Cela à cause de la feuille d'étiquettes, car les petites colonnes et lignes permettent de gérer l'espace entre les étiquettes sur la feuille à imprimer au format A4.

    A force de réfléchir comment je pourrais faire, je me suis aperçu que j'étais bien trop ambitieux par rapport à mes connaissances, et donc je vais simplifier toute la mécanique que je voulais mettre en place.
    Un seul écran pour la saisie des données.

    Nom : Ecran-saisie.JPG
Affichages : 69
Taille : 124,8 Ko

    Puis je ne vais pas m'enquiquiner a essayer de ne colorer que le fond de la forme, mais toute la cellule du tableau.

    En fait ces étiquettes sont rondes et font 2cm de diamètre, et donc en colorant toute la cellule, je risque moins d'être embêté pour le cadrage du papier sur l'imprimante.

    La bordure rouge symbolisant l'étiquette doit être supprimée avant l'impression, et je ferais cela directement dans la macro.

    Par contre si vous aviez la gentillesse de me montrer comment colorer le fond de la cellule du tableau et ce basé sur 3 nombres saisis correspondant aux 3 valeurs du code RGB de la couleur.

    Dans tous les cas je vous remercie pour votre attention et le temps passé à regarder mon problème, et je reste à votre disposition si vous avez d'autres questions.

    Je vous souhaite une bonne journée.

  4. #4
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 346
    Points : 545
    Points
    545
    Par défaut
    Citation Envoyé par jeff1494 Voir le message
    Bonjour,

    Sachant que plusieurs formes sont dans des cellules séparatrices, cela ne servira à rien.

    Regardez ce code, il m'a permis de voir où se situaient les formes par rapport aux cellules du tableau. Les formes sont repérées par rapport à la ligne, la colonne et le numéro d'ordre dans la cellule. Et c'est là le problème car ce numéro devrait être toujours égal à 1, mais on peut avoir jusqu'à 7 formes dans une cellule. Pour mieux voir et pour sélectionner, activez le volet sélection pour avoir la liste des formes.

    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
    Sub RenommerLesEtiquettes()
     
    Dim DocEnCours As Document
    Dim I As Long, J As Long, K As Long
     
        Set DocEnCours = ActiveDocument
        With DocEnCours
             Debug.Print .Tables.Count & ", lignes : " & .Tables(1).Rows.Count & ", colonnes : " & .Tables(1).Columns.Count
             For I = 1 To .Shapes.Count
                .Shapes(I).Name = "Shapes" & I
             Next I
             With .Tables(1)
                  For I = 1 To .Rows.Count
                      For J = 1 To .Columns.Count
                         With .Cell(I, J)
                              If .Range.ShapeRange.Count > 0 Then
                                 For K = 1 To .Range.ShapeRange.Count
                                     Debug.Print I & ", " & J & ", " & .Range.ShapeRange.Count & ", " & .Range.ShapeRange(K).Name
                                     .Range.ShapeRange(K).Name = "Etiquette_" & Format(I, "00") & "_" & Format(J, "00") & "_" & Format(K, "00")
                                 Next K
                              End If
                         End With
     
     
                      Next J
     
                  Next I
             End With
     
     
        End With
        Set DocEnCours = Nothing
     
     
    End Sub

    Le fichier joint contient mon code et un userform. Une des procédure permet de mettre à jour le contenu et la couleur de la forme mais je n'ai pas modifié le userform pour définir les codes rgb, ils sont codés en dur dans la procédure. Pour lancer le userform cliquez sur le bouton vert à droite de la barre d'accès rapide.

    JFC-Etiquettes.zip

    Question : Vous faites du publipostage avec ce document ?

  5. #5
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour E KERGRESSE;

    Encore merci pour votre aide.
    Je vais regarder de près ce que vous avez posté, car j'ai beaucoup à apprendre en ce qui concerne VBA Word. J'ai eu quelques expériences en VBA Excel, et j'avoue que là avec Word c'est tout autre chose.

    Je pense que je vais retravailler ce document pour faire disparaitre ces formes, car elles ne servent qu'à visualiser l'étiquette pour s'assurer du bon cadrage du texte sur l'étiquette. Je dois dans tous les cas supprimer la couleur de bordure de la forme pour ne pas l'avoir lors de l'impression.

    Bref, ces formes m'ont plus dérangé qu'aidé. C'est seulement maintenant que je m'en rend compte. Je suis désolé si mon changement d'idée vous a fait perdre du temps. Mais je vous remercie pour votre aide. J'aurais encore certainement plusieurs questions a poser et j'espère que vous aurez encore la gentillesse de vous arrêter sur mon problème.

    Pour répondre à votre question, non je ne fais pas de publipostage avec ce document.

    En fait mon épouse pratique ce que l'on appelle la "Diamond painting". C'est une activité qui consiste à poser sur un canevas adhésif numéroté des petites pièces carrées en plastique de couleur (ce que l'on appelle des "diamants") afin de réaliser une espèce de tableau.

    Elle a donc plusieurs références de "diamants" chacun d'une couleur différente, et pour les stocker, des petites fioles cylindriques en plastique transparentes.

    Pour s'y retrouver plus facilement je veux créer des étiquettes à coller sur les fioles, avec sur l'étiquette la référence de la couleur sur le canevas (symbolisé par un caractère souvent un chiffre, mais aussi par des caractères du genre "#" par exemple), ainsi qu'un code couleur qui est défini par le code de couleur venant de la marque de fil à broder "DMC". J'ai obtenu un document avec toutes les références DMC ainsi que le code RGB de leur couleur.

    C'est pour cela que je voudrais pouvoir remplir les étiquettes avec ces deux codes, et mettre en fond d'étiquette la couleur qu les codes représentent (d’où cette demande avec les codes RGB).

    Voilà en souhaitant que ces explications ne sont pas trop ennuyeuses.
    Je vous souhaite une bonne journée.

  6. #6
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 346
    Points : 545
    Points
    545
    Par défaut
    Citation Envoyé par jeff1494 Voir le message
    Je pense que ce serait plus simple avec un tableau Excel.

  7. #7
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    En effet cela avait été ma première réaction, mais ayant trouvé le modèle sur le site du fabricant, je me suis dis que finalement cela pourrait-être plus aisé.
    Alors en bon Breton têtu j'ai voulu passer par Word.
    Je crois que je vais continuer pour trouver une solution, cela me fera un très bon exercice.
    Et si d'aventure je n'y arrive pas alors direction Excel.
    Encore merci pour votre aide.
    Bonne journée à vous.

  8. #8
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 346
    Points : 545
    Points
    545
    Par défaut
    Citation Envoyé par jeff1494 Voir le message
    Il suffit d'ajouter les textbox dans mon userform pour les paramètres RGB et cela devrait être bon.

  9. #9
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour;
    Désolé pour ma réponse tardive.
    Je vais reprendre tout cela attentivement, et vous tiendrais au courant.
    Bonne journée à vous.

  10. #10
    Membre du Club Avatar de jeff1494
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 53
    Points
    53
    Par défaut
    Bonjour à toutes et tous;

    Alors j'ai finalement réussi à faire ce que je voulais.
    En fait n'ayant pas un niveau, VBA Word, suffisant pour travailler avec des formes dans un tableau Word, j'ai changé mon fusil d'épaule.
    J'ai tout simplement décidé d'abandonner le travail avec des formes, pour me concentrer sur les cellules de mon tableau.

    Donc je ne cherche plus à colorer une forme, mais je colore toute la cellule du tableau qui contient la forme. Ceci a pour avantage, comme la forme est sensée être contenue dans la cellule, je m'assure que toute l'étiquette est colorée. En terme de cadrage pour l'impression cela est plus confortable.

    Concernant les codes RGB, j'ai gardé l'écran que j'ai posté dans mon message du 02/05 (message #3), et j'ai fait la conversion depuis les codes RGB vers un entier long.
    C'est le moyen de colorer la cellule du tableau qui est comprise par Word (C'est ce que j'ai cru comprendre), et cela fonctionne.

    En terme de calcul pour la conversion voici la ligne de code que j'ai mis en place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        ' Conversion des valeurs Rouge, Vert et Bleu en format décimal pour pouvoir être utilisé par Word.
        Coulfond = (((bleu * 256) * 256) + (vert * 256) + rouge)
    Ou "Coulfond" est défini comme Long, et bleu, rouge, vert comme des bytes.

    Donc pour moi mon problème est résolu.
    Je voudrais passer un grand merci à E KERGRESSE pour son aide et aussi lui présenter mes excuses, car j'étais parti sur une voie que j'ai abandonnée, lui faisant ainsi perdre de son temps à me répondre.

    Par contre je vais utiliser ses informations pour continuer à apprendre. Donc ses informations ne sont pas perdues.

    Je vous souhaite à toutes et tous une bonne fin de week-end.

Discussions similaires

  1. [OpenOffice][Dessin] [Macro LibreOffice Basic] - Comment avoir accès aux formes de Draw en LibreOffice Basic ?
    Par PatrickFr dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 08/12/2015, 23h41
  2. Réponses: 4
    Dernier message: 17/08/2012, 17h10
  3. [XL-2003] Mise en forme de cellule dans un tableau croisé dynamique ?
    Par marot_r dans le forum Excel
    Réponses: 3
    Dernier message: 12/10/2011, 01h18
  4. accès en modification à une cellule d'un tableau
    Par SmileSoft dans le forum JBuilder
    Réponses: 0
    Dernier message: 12/11/2008, 22h07
  5. [Struts]Accès aux Form en session depuis execute?
    Par odoli dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/12/2004, 13h55

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