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 :

Somme et message erreur dans un tableau [WD-2019]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Somme et message erreur dans un tableau
    Bonjour,
    Je souhaiterais automatiser une somme sous word dans un tableau. Je n'arrive pas à supprimer la valeur avant le calcul.
    De plus idéalement j'aimerais avoir un message d'alerte si la saisie dans le tableau n'est pas conforme.
    Je joins un document pour être plus claire.
    Je vous remercie par avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    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 : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Sub ControlerLesValeurDuTableau()
     
    Dim WdDoc As Document
    Dim I As Integer, SommeTotale As Integer, SommeA2A3A4 As Integer, ValeurA2 As Integer, ValeurA3 As Integer, ValeurA4 As Integer, ValeurA5 As Integer
    Dim Message As String
     
        Set WdDoc = ActiveDocument
        SommeTotale = 0: SommeA2A3A4 = 0: ValeurA2 = 0: ValeurA3 = 0: ValeurA4 = 0: ValeurA5 = 0
        Message = "Contrôle des valeurs : " & Chr(10)
     
        With WdDoc
             With .Tables(1).Rows(2).Range
                  .Cells(.Cells.Count).Range = ""
                  For I = 1 To .Cells.Count - 1
                      With .Cells(I)
                             If Len(.Range) > 2 Then
                                SommeTotale = SommeTotale + Mid(.Range, 1, Len(.Range) - 2)
                                Select Case I
                                       Case 2
                                            ValeurA2 = Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA2A3A4 = SommeA2A3A4 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 3
                                            ValeurA3 = Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA2A3A4 = SommeA2A3A4 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 4
                                            ValeurA4 = Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA2A3A4 = SommeA2A3A4 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 5
                                            ValeurA5 = Mid(.Range, 1, Len(.Range) - 2)
                                End Select
                            End If
                     End With
                  Next I
                  .Cells(.Cells.Count).Range = SommeTotale
             End With
        End With
     
        If SommeTotale > 60 Then Message = "Somme totale > 60" & Chr(10)
        If ValeurA2 > 15 And ValeurA4 > ValeurA3 + 10 Then Message = Message & "A2 >15 et A4>A3+10" & Chr(10)
        If ValeurA5 <> SommeA2A3A4 Then Message = Message & "A5 <> A2+A3+A4"
     
        DoEvents
     
        If Message <> "Contrôle des valeurs : " & Chr(10) Then
           MsgBox Message
        End If
     
        Set WdDoc = Nothing
     
    End Sub

  3. #3
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Un immense merci. C'est exactement ça. Très bonne journée.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    J'ai été optimiste!
    Je pensais pouvoir adopter le code mais je n'y arrive pas. Je vous joints un document avec les nouveaux calculs et les conditions d'erreur pour être plus claire.
    Je vous remercie par avance.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    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 : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Sub ControlerLesValeurDuTableauV2()
     
    Dim WdDoc As Document
    Dim I As Integer, SommeTotale As Integer, SommeA4A5A6 As Integer, ValeurA1A2_A4_A5 As Integer
    Dim ValeurA1 As Integer, ValeurA3 As Integer
    Dim Message As String
     
        Set WdDoc = ActiveDocument
        SommeTotale = 0: SommeA4A5A6 = 0: ValeurA1A2_A4_A5 = 0
        ValeurA1 = 0: ValeurA3 = 0
        Message = "Contrôle des valeurs : " & Chr(10)
     
        With WdDoc
             With .Tables(1).Rows(2).Range
                  .Cells(.Cells.Count).Range = ""
                  For I = 1 To .Cells.Count - 1
                      With .Cells(I)
                             If Len(.Range) > 2 Then
                                SommeTotale = SommeTotale + Mid(.Range, 1, Len(.Range) - 2)
                                Select Case I
                                       Case 1
                                            ValeurA1 = Mid(.Range, 1, Len(.Range) - 2)
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 2
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 3
                                            ValeurA3 = Mid(.Range, 1, Len(.Range) - 2)
                                       Case 4
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 5
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 6
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                End Select
                            End If
                     End With
                  Next I
                  .Cells(.Cells.Count).Range = SommeTotale
             End With
        End With
     
       ' Contrôles :
       ' -   A7 =A1+A2-A4-A5
       ' -   Message d'alerte si A1>15 et A7>A1+10
       ' -   Message alerte si A1<15 et A7 >25
       ' -   Message alerte si A3<> A4+A5+A6
       ' -   Message d'alerte si A7>60
     
     
        If SommeTotale > 60 Then Message = "Somme totale > 60" & Chr(10)
        If ValeurA1 > 15 And SommeTotale > ValeurA1 + 10 Then Message = Message & "A1 > 15 et A7 > A1+10" & Chr(10)
        If ValeurA1 < 15 And SommeTotale > 25 Then Message = Message & "A1 <15 et A7 > 25" & Chr(10)
        If ValeurA3 <> SommeA4A5A6 Then Message = Message & "A3 <> A4+A5+A6" & Chr(10)
        If SommeTotale = ValeurA1A2_A4_A5 Then Message = Message & "A7 = A1+A2-A4-A5" & Chr(10)
     
        DoEvents
     
        If Message <> "Contrôle des valeurs : " & Chr(10) Then
           MsgBox Message
        Else
           MsgBox "Tous les contrôles sont OK !"
        End If
     
        Set WdDoc = Nothing
     
    End Sub

  6. #6
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour votre réponse. C'est presque top , juste la cellule A7 n'est pas la somme totale mais correspond à A7 =A1+A2-A4-A5.
    Merci d'avance.

  7. #7
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    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 : 351
    Points : 552
    Points
    552
    Par défaut
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Sub ControlerLesValeurDuTableauV2()
     
    Dim WdDoc As Document
    Dim I As Integer, SommeTotale As Integer, SommeA4A5A6 As Integer, ValeurA1A2_A4_A5 As Integer
    Dim ValeurA1 As Integer, ValeurA3 As Integer, ValeurA7 As Integer
    Dim Message As String
     
        Set WdDoc = ActiveDocument
        SommeA4A5A6 = 0: ValeurA1A2_A4_A5 = 0: ValeurA1 = 0: ValeurA3 = 0: ValeurA7 = 0
        Message = "Contrôle des valeurs : " & Chr(10)
     
        With WdDoc
             With .Tables(1).Rows(2).Range
                  For I = 1 To .Cells.Count
                      With .Cells(I)
                      Debug.Print I & " : " & Len(.Range)
                             If Len(.Range) > 2 Then
                               ' SommeTotale = SommeTotale + Mid(.Range, 1, Len(.Range) - 2)
                                Select Case I
                                       Case 1
                                            ValeurA1 = Mid(.Range, 1, Len(.Range) - 2)
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 2
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 3
                                            ValeurA3 = Mid(.Range, 1, Len(.Range) - 2)
                                       Case 4
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 5
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 6
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 7
                                            ValeurA7 = Mid(.Range, 1, Len(.Range) - 2)
                                End Select
                            End If
                     End With
                  Next I
             End With
        End With
     
       ' Contrôles :
       ' -   A7 =A1+A2-A4-A5
       ' -   Message d'alerte si A1>15 et A7>A1+10
       ' -   Message alerte si A1<15 et A7 >25
       ' -   Message alerte si A3<> A4+A5+A6
       ' -   Message d'alerte si A7>60
     
     
        If ValeurA7 > 60 Then Message = "A7 > 60" & Chr(10)
        If ValeurA1 > 15 And ValeurA7 > ValeurA1 + 10 Then Message = Message & "A1 > 15 et A7 > A1+10" & Chr(10)
        If ValeurA1 < 15 And ValeurA7 > 25 Then Message = Message & "A1 <15 et A7 > 25" & Chr(10)
        If ValeurA3 <> SommeA4A5A6 Then Message = Message & "A3 <> A4+A5+A6" & Chr(10)
        If ValeurA7 = ValeurA1A2_A4_A5 Then Message = Message & "A7 = A1+A2-A4-A5" & Chr(10)
     
        DoEvents
     
        If Message <> "Contrôle des valeurs : " & Chr(10) Then
           MsgBox Message
        Else
           MsgBox "Tous les contrôles sont OK !"
        End If
     
        Set WdDoc = Nothing
     
    End Sub

  8. #8
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour le code c'est top. Juste dans la case A7 je souhaiterai afficher le résultat A7 =A1+A2-A4-A5
    Merci par avance.

  9. #9
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    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 : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Sub ControlerLesValeurDuTableauV3()
     
    Dim WdDoc As Document
    Dim I As Integer, SommeTotale As Integer, SommeA4A5A6 As Integer, ValeurA1A2_A4_A5 As Integer
    Dim ValeurA1 As Integer, ValeurA3 As Integer, ValeurA7 As Integer
    Dim Message As String
     
        Set WdDoc = ActiveDocument
        SommeA4A5A6 = 0: ValeurA1A2_A4_A5 = 0: ValeurA1 = 0: ValeurA3 = 0: ValeurA7 = 0
        Message = "Contrôle des valeurs : " & Chr(10)
     
        With WdDoc
             With .Tables(1).Rows(2).Range
                  For I = 1 To .Cells.Count
                      With .Cells(I)
                      'Debug.Print I & " : " & Len(.Range)
                             If Len(.Range) > 2 Then
                               ' SommeTotale = SommeTotale + Mid(.Range, 1, Len(.Range) - 2)
                                Select Case I
                                       Case 1
                                            ValeurA1 = Mid(.Range, 1, Len(.Range) - 2)
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 2
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 3
                                            ValeurA3 = Mid(.Range, 1, Len(.Range) - 2)
                                       Case 4
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 5
                                            ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 6
                                            SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                       Case 7
                                            .Range = ValeurA1A2_A4_A5
                                            ValeurA7 = Mid(.Range, 1, Len(.Range) - 2)
                                End Select
                            End If
                     End With
                  Next I
             End With
        End With
     
       ' Contrôles :
       ' -   A7 =A1+A2-A4-A5
       ' -   Message d'alerte si A1>15 et A7>A1+10
       ' -   Message alerte si A1<15 et A7 >25
       ' -   Message alerte si A3<> A4+A5+A6
       ' -   Message d'alerte si A7>60
     
     
        If ValeurA7 > 60 Then Message = "A7 > 60" & Chr(10)
        If ValeurA1 > 15 And ValeurA7 > ValeurA1 + 10 Then Message = Message & "A1 > 15 et A7 > A1+10" & Chr(10)
        If ValeurA1 < 15 And ValeurA7 > 25 Then Message = Message & "A1 <15 et A7 > 25" & Chr(10)
        If ValeurA3 <> SommeA4A5A6 Then Message = Message & "A3 <> A4+A5+A6" & Chr(10)
        If ValeurA7 = ValeurA1A2_A4_A5 Then Message = Message & "A7 = A1+A2-A4-A5" & Chr(10)
     
        DoEvents
     
        If Message <> "Contrôle des valeurs : " & Chr(10) Then
           MsgBox Message
        Else
           MsgBox "Tous les contrôles sont OK !"
        End If
     
        Set WdDoc = Nothing
     
    End Sub

  10. #10
    Futur Membre du Club
    Femme Profil pro
    chargée études
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : chargée études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    C'est Top! tout fonctionne.
    Un immense merci.
    Bonne journée.

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

Discussions similaires

  1. Message d'erreur dans mon tableau
    Par SlimEmShady dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2015, 12h37
  2. Erreur dans un tableau
    Par the_fleche dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 15/06/2007, 20h52
  3. Erreur dans un tableau
    Par KOUTO dans le forum Delphi
    Réponses: 10
    Dernier message: 05/06/2007, 19h00
  4. Réponses: 4
    Dernier message: 11/07/2006, 22h58
  5. Message erreur dans textbox
    Par Yanmeunier dans le forum IHM
    Réponses: 7
    Dernier message: 29/06/2006, 14h02

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