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

Macros et VBA Excel Discussion :

Calcul conditionnel avec VBA Excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Calcul conditionnel avec VBA Excel
    Bonjour le Forum,

    Je tente d'écrire une formule conditionnelle Excel avec VBA mais je n'y arrive pas, pourriez-vous m'apporter votre aide s'il vous plait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(Q34=0;0;SI(Q34<15000;0;SI(OU(Q34=15000;Q34<49999,99);G8;SI(OU(Q34>49999,99;Q34<99999,99);G11;SI(Q34>100000;G14;"")))))
    J'ai essayé avec l'enregistreur de macros et je ne m'y retrouve pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            "=IF(R[-6]C[1]=0,0,IF(R[-6]C[1]<15000,0,IF(OR(R[-6]C[1]=15000,R[-6]C[1]<49999.99),R[-32]C[-9],IF(OR(R[-6]C[1]>49999.99,R[-6]C[1]<99999.99),R[-29]C[-9],IF(R[-6]C[1]>100000,R[-26]C[-9],"""")))))"
    Je vous en remercie par avance
    René

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    Salut,

    si on prend la syntaxe la plus proche de ta formule d'origine
    =SI(Q34=0;0;SI(Q34<15000;0;SI(OU(Q34=15000;Q34<49999,99);G8;SI(OU(Q34>49999,99;Q34<99999,99);G11;SI(Q34>100000;G14;"")))))

    on obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("P40").Formula= "=IF(Q34=0,0,IF(Q34<15000,0,IF(OR(Q34=15000,Q34<49999.99),G8,IF(OR(Q34>49999.99,Q34<99999.99),G11,IF(Q34>100000,G14,"""")))))"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Bonjour René,

    Dans un premier temps, vous n'avez pas besoin de mettre des OU dans votre formule conditionnelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(Q5=0;0;SI(Q5<15000;0;SI(Q5<50000;G8;SI(Q5<100000;G11;G14;""))))
    Je vais maintenant voir au niveau du VBA

    A suivre

  4. #4
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Voilà la formule VBA ci-dessous et l'exemple Excel ci-joint

    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
    Sub conditionnel()
    If Range("Q5") = 0 Then
    Range("C5") = 0
    Else
    If Range("Q5") < 15000 Then
    Range("C5") = 0
    Else
    If Range("Q5") < 50000 Then
    Range("C5") = Range("G8")
    Else
    If Range("Q5") < 100000 Then
    Range("C5") = Range("G11")
    Else
    Range("C5") = Range("G14")
    End If
    End If
    End If
    End If
     
    End Sub
    Juste une Question, je suppose que vous avez plusieurs lignes qui doivent avoir la même formule. Pourriez-vous joindre le fichier afin que je puisse faire un meilleur code car si c'est le cas, nous devons utiliser des boucles.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci beaucoup pour votre réponse, le calcul se fait correctement après une petite rectification dans l'emplacement des conditions (c'est de ma faute).
    Cependant, la formule s'affiche dans la barre de formule et je ne souhaite pas. Il faudrait que le résultat s'affiche directement dans la cellule comme je l'ai fait pour ces autres formules :

    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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("P24").Value = Range("G6").Value
    Range("P33").Value = Range("G21").Value
    Range("P44").Value = Range("G22").Value
     
    Range("Q23").Value = Application.Sum(Range("K25:K97"))
    Range("Q24").Value = Application.Sum(Range("Q23").Value * (Range("G6").Value))
    Range("Q25").Value = Application.Sum(Range("Q23").Value - (Range("Q24").Value))
    Range("Q28").Value = Application.Sum(Range("K17").Value * (Range("N28").Value)) + Application.Sum(Range("L17").Value * (Range("P28").Value))
    Range("Q29").Value = Application.Sum(Range("K18").Value * (Range("N29").Value)) + Application.Sum(Range("L18").Value * (Range("P29").Value))
    Range("Q30").Value = Application.Sum(Range("K19").Value * (Range("N30").Value)) + Application.Sum(Range("L19").Value * (Range("P30").Value))
    Range("Q32").Value = Application.Sum(Range("Q28:Q30"))
    Range("Q33").Value = Application.Sum(Range("Q32").Value * (Range("G21").Value))
    Range("Q34").Value = Application.Sum(Range("Q32").Value + (Range("Q33").Value))
    Range("Q38").Value = Application.Sum(Range("Q36").Value + (Range("Q34").Value) + (Range("Q25").Value))
     
    'Range("P40").Formula = "=IF(Q38=0,0,IF(Q38<15000,0,IF(Q38>99999.99,G14,IF(OR(Q38=15000,Q38<49999.99),G8,IF(OR(Q38>49999.99,Q38<99999.99),G11,"""")))))"
     
    Range("Q40").Value = Application.Sum(Range("Q38").Value * (Range("P40").Value))
    Range("Q42").Value = Application.Sum(Range("Q38").Value - (Range("Q40").Value))
    Range("Q44").Value = Application.Sum(Range("Q42").Value * (Range("G22").Value))
    Range("Q46").Value = Application.Sum(Range("Q42").Value + (Range("Q44").Value))
    End Sub
    Merci encore pour votre aide

    OUPS! je n'avais pas vu la dernière réponse, toutes mes excuses

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Le code proposé par MolikDLuffy fonctionne très bien, merci beaucoup à tous les deux.

  7. #7
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    RENE14 : Le code proposé par MolikDLuffy fonctionne très bien, merci beaucoup à tous les deux.
    C'est parfait

    N'oubliez pas cliquer sur "résoudre"

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Juste une dernière question, est-ce qu'il est possible de simplifier toute ma procédure ?
    Merci par avance

  9. #9
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RENE14 Voir le message
    Juste une dernière question, est-ce qu'il est possible de simplifier toute ma procédure ?
    Merci par avance
    Je suis désolé RENE mais il y a trop de cellule... Il me faudrait le fichier ou des imprimes écrans pour mieux comprendre...

    Pour ma part, j'opte pour le fichier :p

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Voici un modèle du fichier en pièce jointe

    Pièce jointe 317370

    Merci beaucoup

  11. #11
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RENE14 Voir le message
    Voici un modèle du fichier en pièce jointe

    Merci beaucoup
    Je ne comprends pas pourquoi vous voulez des macros. Si j'ai bien compris, une feuille correspond à un Lot.

    Il suffit juste d'automatiser le tableau (qui est déjà fait) et les montants de la colonne Q.

  12. #12
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Pour rester dans votre idée :
    Voici de façon plus simple votre code VBA

    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
    Private Sub Worksheet_Activate()
    Range("P24") = Range("G6").Value
    Range("P33") = Range("G21").Value
    Range("P44") = Range("G22").Value
     
    Range("Q23") = [Sum(K25:K97)]
    Range("Q24") = Range("Q23") * Range("G6")
    Range("Q25") = Range("Q23") - Range("Q24")
    Range("Q28") = Range("K17") * Range("N28") + Range("L17") * Range("P28")
    Range("Q29") = Range("K18") * Range("N29") + Range("L18") * Range("P29")
    Range("Q30") = Range("K19") * Range("N30") + Range("L19") * Range("P30")
    Range("Q32") = [Sum(Q28:Q30)]
    Range("Q33") = Range("Q32") * Range("G21")
    Range("Q34") = Range("Q32") + Range("Q33")
    Range("Q38") = Range("Q36") + Range("Q34") + Range("Q25")
     
    If Range("Q38") = 0 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 15000 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 50000 Then
    Range("P40") = Range("G8")
    Else
    If Range("Q38") < 100000 Then
    Range("P40") = Range("G11")
    Else
    Range("P40") = Range("G14")
    End If
    End If
    End If
    End If
     
    Range("Q40") = Range("Q38") * Range("P40")
    Range("Q42") = Range("Q38") - Range("Q40")
    Range("Q44") = Range("Q42") * Range("G22")
    Range("Q46") = Range("Q42") + Range("Q44")
    End Sub

  13. #13
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci beaucoup pour votre aide.
    Je passe par les macros car je ne peux pas protéger le document par un mot de passe (non autorisé par mon boss), alors pour ne pas prendre le risque de voir les formules de calculs être effacées, je passe par VBA.
    Il y a 9 lots identiques à celui-ci, je vais pouvoir répéter les formules dans chaque feuille. J'aurai pu passer par un module, mais les tableaux ne sont pas tous identiques.

    Encore mille mercis pour votre coopération.

    J'ai encore ces dernières formules à trouver avec VBA
    celle-ci des cellules G25 à G97
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(F25="";"";RECHERCHEV(F25;$A$4:$D$178;2))
    et cette autre des cellules K25 à K97
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(F25="";"";(G25*H25)+(I25*J25))

  14. #14
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Voici le code final avec intégration du code Application.WorksheetFunction.Vlookup

    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
    Private Sub Worksheet_Activate()
    For ligne = 25 To 97 'correspond au tableau qui va de la ligne 25 à la ligne 97
    If Cells(ligne, 6) <> "" Then
    Cells(ligne, 7) = Application.WorksheetFunction.VLookup(Cells(ligne, 6).Value, Range("A1:D178"), 2, 0)
    Cells(ligne, 9) = Application.WorksheetFunction.VLookup(Cells(ligne, 6).Value, Range("A1:D178"), 3, 0)
    End If
    Next ligne
     
    Range("P24") = Range("G6").Value
    Range("P33") = Range("G21").Value
    Range("P44") = Range("G22").Value
     
    Range("Q23") = [Sum(K25:K97)]
    Range("Q24") = Range("Q23") * Range("G6")
    Range("Q25") = Range("Q23") - Range("Q24")
    Range("Q28") = Range("K17") * Range("N28") + Range("L17") * Range("P28")
    Range("Q29") = Range("K18") * Range("N29") + Range("L18") * Range("P29")
    Range("Q30") = Range("K19") * Range("N30") + Range("L19") * Range("P30")
    Range("Q32") = [Sum(Q28:Q30)]
    Range("Q33") = Range("Q32") * Range("G21")
    Range("Q34") = Range("Q32") + Range("Q33")
    Range("Q38") = Range("Q36") + Range("Q34") + Range("Q25")
     
    If Range("Q38") = 0 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 15000 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 50000 Then
    Range("P40") = Range("G8")
    Else
    If Range("Q38") < 100000 Then
    Range("P40") = Range("G11")
    Else
    Range("P40") = Range("G14")
    End If
    End If
    End If
    End If
     
    Range("Q40") = Range("Q38") * Range("P40")
    Range("Q42") = Range("Q38") - Range("Q40")
    Range("Q44") = Range("Q42") * Range("G22")
    Range("Q46") = Range("Q42") + Range("Q44")
     
     
    End Sub

  15. #15
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci beaucoup, le code fonctionne plutôt bien. Cependant, lorsque j'efface les données dans la liste de choix, les résultats de la recherche reste dans le tableau, ils ne sont pas effacés automatiquement.
    Reste encore cette formule à glisser dans les cellules de K25 àK97.
    Je cherche de mon côté mais vous êtes plus rapide que moi, si je trouve la solution, je vous avertis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(F25="";"";(G25*H25)+(I25*J25))
    J'ai tenté de faire ça, mais cela me répète le même résultat, même quand la colonne nombre est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim MCell As Range
        For Each MCell In Range("K25:K97")
        MCell = Range("G25") * Range("H25") + Range("I25") * Range("J25")
        Next

  16. #16
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    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
    Private Sub Worksheet_Activate()
    For ligne = 25 To 97
    If Cells(ligne, 6) <> "" Then
    Cells(ligne, 7) = Application.WorksheetFunction.VLookup(Cells(ligne, 6).Value, Range("A1:D178"), 2, 0)
    Cells(ligne, 9) = Application.WorksheetFunction.VLookup(Cells(ligne, 6).Value, Range("A1:D178"), 3, 0)
    Cells(ligne, 11) = Cells(ligne, 7) * Cells(ligne, 8) + Cells(ligne, 9) * Cells(ligne, 10)
    End If
    Next ligne
     
    Range("P24") = Range("G6").Value
    Range("P33") = Range("G21").Value
    Range("P44") = Range("G22").Value
     
    Range("Q23") = [Sum(K25:K97)]
    Range("Q24") = Range("Q23") * Range("G6")
    Range("Q25") = Range("Q23") - Range("Q24")
    Range("Q28") = Range("K17") * Range("N28") + Range("L17") * Range("P28")
    Range("Q29") = Range("K18") * Range("N29") + Range("L18") * Range("P29")
    Range("Q30") = Range("K19") * Range("N30") + Range("L19") * Range("P30")
    Range("Q32") = [Sum(Q28:Q30)]
    Range("Q33") = Range("Q32") * Range("G21")
    Range("Q34") = Range("Q32") + Range("Q33")
    Range("Q38") = Range("Q36") + Range("Q34") + Range("Q25")
     
    If Range("Q38") = 0 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 15000 Then
    Range("P40") = 0
    Else
    If Range("Q38") < 50000 Then
    Range("P40") = Range("G8")
    Else
    If Range("Q38") < 100000 Then
    Range("P40") = Range("G11")
    Else
    Range("P40") = Range("G14")
    End If
    End If
    End If
    End If
     
    Range("Q40") = Range("Q38") * Range("P40")
    Range("Q42") = Range("Q38") - Range("Q40")
    Range("Q44") = Range("Q42") * Range("G22")
    Range("Q46") = Range("Q42") + Range("Q44")
     
     
    End Sub

    Pour effacer les données, je vous conseille de cliquer sur un bouton qui intègre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub effacer()
    Sheets("Feuil1").Select
    Range("A1:D178").ClearContents
    End Sub

  17. #17
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci pour votre solution, mais j'ai préféré écrire ce code pour effacer les cellules, est-ce correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Cells(ligne, 6) = "" Then
    Cells(ligne, 7).ClearContents
    Cells(ligne, 8).ClearContents
    Cells(ligne, 9).ClearContents
    Cells(ligne, 10).ClearContents
    End If

  18. #18
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RENE14 Voir le message
    Merci pour votre solution, mais j'ai préféré écrire ce code pour effacer les cellules, est-ce correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Cells(ligne, 6) = "" Then
    Cells(ligne, 7).ClearContents
    Cells(ligne, 8).ClearContents
    Cells(ligne, 9).ClearContents
    Cells(ligne, 10).ClearContents
    End If
    je pense à tester

    bien sur il faut intégrer un For ligne = ... to ....

  19. #19
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Juste une dernière réflexion avant de clôturer ce post, est-ce qu'il ne serait pas plus simple de créer un formulaire de saisie qui alimenterait le tableau F25:K97 au lieu de me compliquer avec une tartinée de formule ?

    Sinon merci beaucoup pour ta précieuse aide.

    Cordiales salutations
    René

  20. #20
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RENE14 Voir le message
    Juste une dernière réflexion avant de clôturer ce post, est-ce qu'il ne serait pas plus simple de créer un formulaire de saisie qui alimenterait le tableau F25:K97 au lieu de me compliquer avec une tartinée de formule ?

    Sinon merci beaucoup pour ta précieuse aide.

    Cordiales salutations
    René
    Toute programmation est amenée à tartiner de formule mais tant que ça marche ça va

    Avec un formulaire ça peut-être styler visuellement mais pas plus rapide que si l'on fait ça manuellement (Selon mon avis bien entendu).

    Tu es libre de tester un formulaire mais il y aura besoin également de formule.

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

Discussions similaires

  1. [XL-2010] Calcul avec vba excel
    Par jean1vba2013 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2013, 15h48
  2. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 11h45
  3. [XL-2003] Formule de calcul avec VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/06/2009, 14h23
  4. lien internet avec VBA EXCEL
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 11h40
  5. Images avec VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/09/2006, 00h28

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