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 :

Insérer du calcul dans un document Word [WD-2007]


Sujet :

VBA Word

  1. #1
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut Insérer du calcul dans un document Word
    Bonjour à tous,

    Dans un tableau, qui contient N° d’articles, désignation, prix unitaire, quantité, total par article, j’aimerais intégrer le calcul du total par article = prix unitaire * quantité.

    A la fin du tableau, j’aurais besoin de cumuler tout les totaux déjà calculés.

    Une approche ?

    Merci d’avance.

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut Voir sujet
    Bonjour,

    Voilà un essai. Il faut placer le curseur dans le tableau et il calcule tous les sous-totaux et le total quel que soit le nombre de lignes.


    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
    Sub calcul()
     
    Dim Lig As Byte
    Dim Col As Byte
    Dim PU As Long
    Dim Qu As Long
    Dim Stot As Long
    Dim Tot As Long
     
    ' Nblignes et Nbcolonnes
        Lig = ActiveDocument.Tables(1).Rows.Count
        Col = ActiveDocument.Tables(1).Columns.Count
     
    For i = 2 To Lig - 1
    ' récupération du Prix Unitaire
        PU = NetText(ActiveDocument.Tables(1).Cell(i, 3).Range.Text)
    ' récupération de la Quantité
        Qu = NetText(ActiveDocument.Tables(1).Cell(i, 4).Range.Text)
    ' Stot = sous total de la ligne
        Stot = PU * Qu
    ' calcul au fur et à mesure du Total
        Tot = Tot + Stot
    ' insertion du sous total
        ActiveDocument.Tables(1).Cell(i, 5).Range.Text = Stot
    Next i
     
    ' insertion du Total
    ActiveDocument.Tables(1).Cell(Lig, Col).Range.Text = Tot
     
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function NetText(stTemp As String) As String
    ' voir très bon document (Débutez en VBA Word) par Olivier Lebeau
    NetText = Left(stTemp, Len(stTemp) - 2)
    End Function

  3. #3
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir QuestVBA,

    Merci de m'avoir répondu.

    J'ai essayé d'appliquer le code proposé, mais rien ne se passe

    En PJ l'exemple.

    Merci.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Sans passer par du vba, tu peux directement insérer un champ quifait le calcul tel que avec C qui désigne la 3èmè colonne et 2 la deuxième ligne du tableau comme dans Excel.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  5. #5
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir carden752,

    Un exemple, parce que je l'ai utilisé sans résultat !

    Merci.

  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,

    Les {} données par carden ne sont pas de simples crochets mais des balises de champ.
    On les obtiens en utilisant la combinaison de touches Ctrl + F9
    Dans ces {}, on insère l'opération souhaitée.

    http://heureuxoli.developpez.com/office/word/champs/

    Et pour les opérations : http://heureuxoli.developpez.com/off.../champs/#LIV-C
    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
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour Heureux-oli,

    Merci pour les liens.

    Il me manquait juste, comment mettre à jour les champs : ALT+F9.

    Reste que, j'aurais besoin de faire marcher la macro de QuestVBA, si j'ai un long tableau.

    J'ai fait ce qu'il m'a dit :

    Il faut placer le curseur dans le tableau et il calcule tous les sous-totaux et le total quel que soit le nombre de lignes.
    Mais rien ne se passe

    Merci.

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    ALT F9 c'est pour afficher les codes de champs. La mise à jour c'est F9 et il vaut mieux faire CTRL A, pour tout sélectionner, avant
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir 78chris,

    Merci pour cette mise à jour

    En attendant que quelqu'un pourra fonctionner la macro de QuestVBA.

  10. #10
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut Sujet
    Bonjour,

    Effectivement, j'ai une erreur!

    J'étais parti du principe que toutes les lignes étaient complétées. Je dois donc ajouter un code pour éviter les lignes où PU et Qu sont vides en même temps. Voici la modification complète.

    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
    Sub calcul()
     
        Dim Lig As Byte
        Dim Col As Byte
        Dim PU As Long
        Dim Qu As Long
        Dim Stot As Long
        Dim Tot As Long
        Dim i As Long
     
        ' Nblignes et Nbcolonnes
        Lig = ActiveDocument.Tables(1).Rows.Count
        Col = ActiveDocument.Tables(1).Columns.Count
     
        For i = 2 To Lig - 1
            ' récupération du Prix Unitaire
            PU = NetText(ActiveDocument.Tables(1).Cell(i, 3).Range.Text)
            ' récupération de la Quantité
            Qu = NetText(ActiveDocument.Tables(1).Cell(i, 4).Range.Text)
            ' Stot = sous total de la ligne
            Stot = PU * Qu
            ' calcul au fur et à mesure du Total
            Tot = Tot + Stot
            ' vérification si PU et Qu sont vides en même temps
            If PU = 0 And Qu = 0 Then GoTo line1:
            ' insertion du sous total
            ActiveDocument.Tables(1).Cell(i, 5).Range.Text = Stot
    line1:
        Next i
     
        ' insertion du Total
        ActiveDocument.Tables(1).Cell(Lig, Col).Range.Text = Tot
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function NetText(stTemp As String) As String
    ' voir très bon document (Débutez en VBA Word) par Olivier Lebeau
        NetText = Left(stTemp, Len(stTemp) - 2)
        If NetText = "" Then NetText = 0
    End Function
    J'ai mis le fichier Test. En espérant que c'est ok!
    Fichiers attachés Fichiers attachés

  11. #11
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir QuestVBA,

    Merci pour le fichier.

    Mais reste comment déclencher la macro (calcul).

    Parce que j'ai cliqué dans toutes les cellules du tableau mais rien ne se passe

  12. #12
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    En ayant jeté un oeil à la macro, c'est une procédure donc il faut la lancer par le menu developpeur puis cliquer sur Macros et sélectionner la macro calcul.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  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,

    Citation Envoyé par apt Voir le message
    Parce que j'ai cliqué dans toutes les cellules du tableau mais rien ne se passe
    Word ne réagit pas aux clics.
    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 expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut Sujet
    Bonjour,

    J'ai ajouté le bouton. Est-ce OK ?
    Fichiers attachés Fichiers attachés

  15. #15
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonjour,

    Dans un document, ce n'est présentable d'avoir un bouton au milieu.

    Alors, n'y a-t-il pas un moyen de le remplacer par un doubleClick ou autre chose ?

    Merci.

  16. #16
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Hello,

    Allez, un pour la route .

    Je joins le fichier avec un raccourci clavier.

    1. dble clic sur document
    2. activer macro
    3. touches: ctrl + l
    Fichiers attachés Fichiers attachés

  17. #17
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Salut,

    Merci pour l'exemple

    Ca marche maintenant.


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

    Word ne réagit pas aux clics, ni aux doubles clics.
    Imagine si un évènement se produit chaque fois que tu utilises la souris
    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 !

  19. #19
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Bonsoir Heureux-oli,

    Imagine si un évènement se produit chaque fois que tu utilises la souris
    Meric pour ces informations

  20. #20
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Word ne réagit pas aux clics, ni aux doubles clics.
    Imagine si un évènement se produit chaque fois que tu utilises la souris
    Bonjour,

    Es-tu sûr que Word ne réagit pas aux double clic?
    Il me semble que tu peux intercepter cet évènement comme celui du clic droit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub App_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insérer du RTF dans un document Word en VB.Net
    Par devuranie dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/01/2011, 22h50
  2. insérer une image dans un document word
    Par jihad dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/01/2011, 10h06
  3. Insérer un Objet dans un document Word
    Par benstile dans le forum VBScript
    Réponses: 5
    Dernier message: 14/09/2010, 12h52
  4. insérer plusieurs images dans une document word
    Par Montor dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2009, 13h14
  5. Réponses: 5
    Dernier message: 27/09/2005, 09h18

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