Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui se lance après validation liste déroulante

  • Initiateur de la discussion Initiateur de la discussion MEZ
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MEZ

XLDnaute Junior
Bonjour à tous,
J'essaye de faire une macro qui me permet de faire une vérification de cohérence suite à ce que j'ai validé dans une liste déroulante.
J'ai mis un fichier en copie, je pense qui résume de manière simple le pb.
J'ai essayé plusieurs méthodes mais j'ai du mal déjà à fixer la macro à une seule colonne.

Si vous avez des idées ou piste de réflexions je suis preneur.

Merci beaucoup et Bon weekend
 

Pièces jointes

Bonsoir MEZ,

Clic droit sur l'onglet, Visualiser le code et coller cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 And Target.Column = 5 And Target.Count = 1 And Target(1) <> "" Then _
    MsgBox "Nombre de '" & Target & "' = " & Application.CountIf([E:E], Target) _
        & vbLf & "Somme quantité1 = " & Application.SumIf([E:E], Target, [B:B])
End Sub
A+
 
Merci Job75 pour ce retour précis!
J'essaye maintenant de rajouter une difficulté: Je cherches à prendre en compte dans le comptage que les lignes pour lesquelles la première cellule de la colonne est identique à la dernière ligne en-cours de saisie. Dans le fichier que je mets en copie, il s'agit donc de prendre en compte que les lignes qui ont en colonne 1 la valeur 4

Quelle serait la meilleure boucle à utiliser à ton avis? ou si pas de boucle quelle autre méthode?

Merci!
 

Pièces jointes

Bonjour MEZ, le forum,

D'après ce que je comprends il faut utiliser NB.SI.ENS (CountIfs) et SOMME.SI.ENS (SumIfs) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim filtre1 As Range, filtre2 As Range
Set filtre1 = [E2]: Set filtre2 = [A2] 'modifiable
If Target.Row > 1 And Target.Column = filtre1.Column And Target.Count = 1 And Target(1) <> "" _
    And Target(1) = filtre1 And Cells(Target.Row, filtre2.Column) = filtre2 Then _
        MsgBox "Nombre de '" & filtre1 & "' + '" & filtre2 & "' = " & _
            Application.CountIfs(filtre1.EntireColumn, filtre1, filtre2.EntireColumn, filtre2) & vbLf & _
                "Somme quantité1 = " & Application.SumIfs([B:B], filtre1.EntireColumn, filtre1, filtre2.EntireColumn, filtre2)
End Sub
Bonne journée.
 

Pièces jointes

Dernière édition:
Bonsoir,
La macro fonctionne très bien mais elle se lance des fois quand je tire d'autres colonnes ( colonne liste déroulante..mais aucun rapport avec celle qui est sujet de ce topic

J'ai ces messages:



Quelle solution possible pour éviter ce genre de situation du coup?

Merci et bonne soirée!
 
Bonjour Job75,
Même avec cette correction, la macro se lance pour d'autres colonnes:

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim filtre1 As Range, filtre2 As Range
Set filtre1 = [S2]: Set filtre2 = [A2] 'modifiable si les colonnes concernées changent

     If Target.Row > 1 And Target.Column = filtre1.Column And Target.Count = 1 And Target(1) <> "" _
     And Target(1) = filtre1 And Cells(Target.Row, filtre2.Column) = filtre2 Then _
 
           MsgBox "Nombre de '" & filtre1 & "' pour le contrat ID '" & filtre2 & "' = " & _
           Application.CountIfs(filtre1.EntireColumn, filtre1, filtre2.EntireColumn, filtre2) & vbLf & _
           "Le Cumul cliqué de " & filtre1 & " est de " & Application.SumIfs([R:R], filtre1.EntireColumn, filtre1, filtre2.EntireColumn, filtre2) * 100 & "%"

    End If

End Sub

Je remets mon code.. Je ne vois pas où ça coince?

Merci!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
668
Réponses
1
Affichages
455
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…