Target.value="" & déclenchement de macro

Le
ManBas
Bonsoir à tous,

Je déclenche une macro qui compte des ajouts ou des annulations, selon la
valeur de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
If Target.Value = "" Then
If MsgBox("S'agit-il d'une annulation?") = vbYes Then
Range("AB10").Value = Range("AB10").Value - 1
Else
Range("AB10").Value = Range("AB10").Value
End If
Else
Range("AB10").Value = Range("AB10").Value + 1
End If

J'ai deux problemes:
-cette macro se "re-déclenche" à la fermeture du classeur s'il y a
effectivement des cellules vides: le décompte devient fastidieux pour
l'utilisateur et donne alors des résultats faux car déjà comptabilisés.
- cette macro ne "voit pas" les cellules dont le contenu est " " ou " " ou
" " (etc, etc,) dans le cas où l'utilisateur a utilisé la souris et la
touche espace pour effacer le contenu de la cellule.

Puis-je éviter le 2eme décompte à la fermeture?
Quelle autre formulation puis-je utiliser pour détecter les cellules qui
contiennent des "espaces vides"?

Merci +++ de vos suggestions
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LSteph
Le #4398091
Bonsoir,

Qu'y a-t-il dans ThisWorkbook?

...

Bonsoir à tous,

Je déclenche une macro qui compte des ajouts ou des annulations, selon la
valeur de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
If Target.Value = "" Then
If MsgBox("S'agit-il d'une annulation?") = vbYes Then
Range("AB10").Value = Range("AB10").Value - 1
Else
Range("AB10").Value = Range("AB10").Value
End If
Else
Range("AB10").Value = Range("AB10").Value + 1
End If

J'ai deux problemes:
-cette macro se "re-déclenche" à la fermeture du classeur s'il y a
effectivement des cellules vides: le décompte devient fastidieux pour
l'utilisateur et donne alors des résultats faux car déjà comptabilisés.
- cette macro ne "voit pas" les cellules dont le contenu est " " ou " " ou
" " (etc, etc,) dans le cas où l'utilisateur a utilisé la souris et la
touche espace pour effacer le contenu de la cellule.

Puis-je éviter le 2eme décompte à la fermeture?
Quelle autre formulation puis-je utiliser pour détecter les cellules qui
contiennent des "espaces vides"?

Merci +++ de vos suggestions




Daniel
Le #4398081
Bonsoir.
Je n'ai pas bien compris pourquoi l'évènement se déclanchait à la fermeture
du classeur.
Ajoute application.enableeventsúlse en début de macro et
application.enableevents=true à la fin.
Pour les espaces :
If trim(Target.Value) = "" Then
au lieu de :
If Target.Value = "" Then
Cordialement.
Daniel
"ManBas"
Bonsoir à tous,

Je déclenche une macro qui compte des ajouts ou des annulations, selon la
valeur de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
If Target.Value = "" Then
If MsgBox("S'agit-il d'une annulation?") = vbYes Then
Range("AB10").Value = Range("AB10").Value - 1
Else
Range("AB10").Value = Range("AB10").Value
End If
Else
Range("AB10").Value = Range("AB10").Value + 1
End If

J'ai deux problemes:
-cette macro se "re-déclenche" à la fermeture du classeur s'il y a
effectivement des cellules vides: le décompte devient fastidieux pour
l'utilisateur et donne alors des résultats faux car déjà comptabilisés.
- cette macro ne "voit pas" les cellules dont le contenu est " " ou " "
ou " " (etc, etc,) dans le cas où l'utilisateur a utilisé la souris
et la touche espace pour effacer le contenu de la cellule.

Puis-je éviter le 2eme décompte à la fermeture?
Quelle autre formulation puis-je utiliser pour détecter les cellules qui
contiennent des "espaces vides"?

Merci +++ de vos suggestions



Jacky
Le #4398051
Bonsoir,

J'ai pas bien saisie la nécessité de cette macro événementielle

En AB10
=NBVAL(H:H)

Selection de la colonne H
Donnée validation
Autoriser==> personnalisé
Formule==> =GAUCHE(H1;1)<>" "
--
Salutations
JJ



"ManBas"
Bonsoir à tous,

Je déclenche une macro qui compte des ajouts ou des annulations, selon la
valeur de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
If Target.Value = "" Then
If MsgBox("S'agit-il d'une annulation?") = vbYes Then
Range("AB10").Value = Range("AB10").Value - 1
Else
Range("AB10").Value = Range("AB10").Value
End If
Else
Range("AB10").Value = Range("AB10").Value + 1
End If

J'ai deux problemes:
-cette macro se "re-déclenche" à la fermeture du classeur s'il y a
effectivement des cellules vides: le décompte devient fastidieux pour
l'utilisateur et donne alors des résultats faux car déjà comptabilisés.
- cette macro ne "voit pas" les cellules dont le contenu est " " ou " "
ou " " (etc, etc,) dans le cas où l'utilisateur a utilisé la souris
et la touche espace pour effacer le contenu de la cellule.

Puis-je éviter le 2eme décompte à la fermeture?
Quelle autre formulation puis-je utiliser pour détecter les cellules qui
contiennent des "espaces vides"?

Merci +++ de vos suggestions



LSteph
Le #4398041
re,

(pour le moment pas de retour sur les questions et suggestions...)
A l'aveugle, je complète
Si dans Thisworkbook, il y a un beforesave qui intervient, il faudrait
probablement mettre un application.enableevents = false dedans


@+

lSteph
Jacky
Le #4398021
Re.....
A l'aveugle, je complète
Non Steph, .....pas avec la canne blanche;o))

Ce Msgbox écrit de cette façon
MsgBox("S'agit-il d'une annulation?") = vbYes
ne contrôle pas de vbYes


--
Salutations
JJ



"LSteph" %


re,

(pour le moment pas de retour sur les questions et suggestions...)
A l'aveugle, je complète
Si dans Thisworkbook, il y a un beforesave qui intervient, il faudrait
probablement mettre un application.enableevents = false dedans


@+

lSteph



ManBas
Le #4397921
Bonjour Daniel,
Pardon de n'avoir pas été là pour ta réponse hier soir.
Merci beaucoup pour cet apport.
Evidemment ça marche.
A bientôt

"Daniel"
Bonsoir.
Je n'ai pas bien compris pourquoi l'évènement se déclanchait à la
fermeture du classeur.
Ajoute application.enableeventsúlse en début de macro et
application.enableevents=true à la fin.
Pour les espaces :
If trim(Target.Value) = "" Then
au lieu de :
If Target.Value = "" Then
Cordialement.
Daniel
"ManBas"
Bonsoir à tous,

Je déclenche une macro qui compte des ajouts ou des annulations, selon la
valeur de la cellule.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
If Target.Value = "" Then
If MsgBox("S'agit-il d'une annulation?") = vbYes Then
Range("AB10").Value = Range("AB10").Value - 1
Else
Range("AB10").Value = Range("AB10").Value
End If
Else
Range("AB10").Value = Range("AB10").Value + 1
End If

J'ai deux problemes:
-cette macro se "re-déclenche" à la fermeture du classeur s'il y a
effectivement des cellules vides: le décompte devient fastidieux pour
l'utilisateur et donne alors des résultats faux car déjà comptabilisés.
- cette macro ne "voit pas" les cellules dont le contenu est " " ou " "
ou " " (etc, etc,) dans le cas où l'utilisateur a utilisé la souris
et la touche espace pour effacer le contenu de la cellule.

Puis-je éviter le 2eme décompte à la fermeture?
Quelle autre formulation puis-je utiliser pour détecter les cellules qui
contiennent des "espaces vides"?

Merci +++ de vos suggestions








LSteph
Le #4397871
Un peu à côté de la plaque Jacky...
la prochaine fois fais comme moi!

;o))

Re.....
A l'aveugle, je complète
Non Steph, .....pas avec la canne blanche;o))

Ce Msgbox écrit de cette façon
MsgBox("S'agit-il d'une annulation?") = vbYes
ne contrôle pas de vbYes






ManBas
Le #4397641
Merci de ta réponse Jacky.
C'est vrai qu'il y a une erreur de transcription.

"Jacky" eOdAT$
Re.....
A l'aveugle, je complète
Non Steph, .....pas avec la canne blanche;o))

Ce Msgbox écrit de cette façon
MsgBox("S'agit-il d'une annulation?") = vbYes
ne contrôle pas de vbYes


--
Salutations
JJ



"LSteph" %


re,

(pour le moment pas de retour sur les questions et suggestions...)
A l'aveugle, je complète
Si dans Thisworkbook, il y a un beforesave qui intervient, il faudrait
probablement mettre un application.enableevents = false dedans


@+

lSteph








Publicité
Poster une réponse
Anonyme