Macro événementielle sur plusieurs cellules

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • 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 !

C@thy

XLDnaute Barbatruc
Bonsouar le forum,

lorsque la saisie de la ligne est terminée je fais un certain traitement.

La saisie de la ligne est terminée si :
A à H rempli + I,J,K,L,M au moins 1 remplie + N à S rempli.

Je pense que la meilleure solution est de faire une macro événementielle (comme ça, y'a pas besoin de la lancer).

Comment vérifier que toutes les cellules sont bien remplies?

Je pense qu'il faudrait lancer la macro événementielle lors de la saisie de la dernière cellule (col S) pour éviter qu'elle s'exécute à chaque saisie dans la ligne.

Merci à vous si vous pouvez m'aider ou me mettre sur la voie.

Bises du souar🙂

C@thy
 
Re : Macro événementielle sur plusieurs cellules

Bonjour C@thy,

Quelque chose comme ceci peut-être :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 19 Then Exit Sub
    If Target.Count <> 1 Then Exit Sub
    
    If Application.CountA(Range(Cells(Target.Row, 1), Cells(Target.Row, 8))) = 8 And _
        Application.CountA(Range(Cells(Target.Row, 9), Cells(Target.Row, 13))) >= 1 And _
        Application.CountA(Range(Cells(Target.Row, 14), Cells(Target.Row, 19))) = 6 Then
        
        'Ta macro ici si validation correcte
        Target.Offset(0, 1) = "OK"
    Else
    
        'Validation incorrecte
        Target.Offset(0, 1) = "Pas ok"
    End If
End Sub

Ne s'exécute que lorsque la colonne S est remplie. Donc s'il y a un changement dans les autres colonnes après, ce ne sera pas "détecté" par la macro.

A+
 
Re : Macro événementielle sur plusieurs cellules

Merci à toi ô grand chaman excel, oui, cela fonctionne bien, avec l'inconvénient que tu as signalé,
à savoir que si il manque une cellule remplie ailleurs on a pas OK et si par la suite on la remplit, la macro ne s'exécute pas.
espérons qu'ils rempliront dans le bon sens....

à moins qu'il y ait un moyen de ne pas accepter la saisie en S si les autres ne sont pas remplies, ou peut-être même mieux, contrairement à ce que je pensais, le faire sur chaque cellule, étant donné que le pas OK se limite à aucun traitement
(on ne fait le traitement que si c'est rempli).

Mille mercis

Bises

C@thy
 
Re : Macro événementielle sur plusieurs cellules

Bonjour,

Il suffit de virer la première condition :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count <> 1 Then Exit Sub
   
    If Application.CountA(Range(Cells(Target.Row, 1), Cells(Target.Row, 8))) = 8 And _
        Application.CountA(Range(Cells(Target.Row, 9), Cells(Target.Row, 13))) >= 1 And _
        Application.CountA(Range(Cells(Target.Row, 14), Cells(Target.Row, 19))) = 6 Then
       
        'Ta macro ici si validation correcte
        Application.EnableEvents = False
        Range("T" & Target.Row) = "OK"
        Application.EnableEvents = True
        
    Else
   
        'Validation incorrecte
        Application.EnableEvents = False
        Range("T" & Target.Row) = "PAS OK"
        Application.EnableEvents = True
        
    End If
    
End Sub

Hervé.
 
Re : Macro événementielle sur plusieurs cellules

Oui, Mutzik, tu as raison, je privilégie aussi toujours la formule,
mais là il s'agit d'archiver le mail dans outlook dans un répertoire, donc macro!!!

Set Dossier = Ns.Folders(balOutlook).Folders("Prise en charge demande")
Set Dossier2 = Dossier.Folders("dossiers traités")
Dossier.Items(1).UnRead = False
Dossier.Items(1).Move Dossier2

j'ai viré la 1ère condition mais rajouté quelques petits trucs :
Code:
If Target.Count <> 1 Or Target.Row < 6 Or Target.Column > 19 Then Exit Sub
et c'est nickel.

Merci à vous deux.

C@thy
 
Dernière édition:
Re : Macro événementielle sur plusieurs cellules

Merci faux rhum!!!

c'est une idée, mais je dois déjà colorer en rouge certaines cellules si la date de réponse est dépassée (> date du jour),
donc, pas d'autres couleurs, mais c'est sympa.

Bises du soir

C@thy
 
- 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
3
Affichages
655
Retour