Problème incompréhensible dans un contrôle de saisies

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Voilà un bon moment que j'essaie de comprendre pourquoi un contrôle de saisie "beugue" uniquement pour certaines cellules d'un tableau.
J'ai passé un autre bon moment à réaliser un exemple nettement plus explicite qu'un long discours. Je pense que tout devrait être clair.

Merci d'avance pour me dépanner.

Bonne fin d'après-midi.
 

Pièces jointes

Re : Problème incompréhensible dans un contrôle de saisies

Merci jp14 pour t'être penché sur le problème, mais voilà ta solution ne fait que court-circuiter les cellules à problème qui se trouvent toutes sur la même ligne, mais de plus on se retrouve ensuite dans une galère, puisqu'en écrivant : If Target.Row = 8 Then Exit Sub
on shunte Application.EnableEvents = True et là on n'est pas dans la m...
En revanche ta solution m'a permis de mieux cerner le problème et de comprendre qu'il ne concernait que des cellules FUSIONNÉES.
Peut-on contourner ce problème ?
 
Re : Problème incompréhensible dans un contrôle de saisies

Bonjour

If Target.Row = 8 Then Exit Sub doit être mis au début de la procédure après les déclarations.

Une autre solution avec target.adress vérifier si l'adresse correspond à une cellule
Voici tous les noms et adresses
DilMaxNbUXParGr1b Dilutions!$L$6
DilMaxNbUXParGr1c Dilutions!$R$6
DilNbGrS1a Dilutions!$D$12
DilNbGrS1b Dilutions!$J$10
DilNbGrS1c Dilutions!$P$10
DilNbUXFl1 Dilutions!$D$7
DilNbUXGet1a Dilutions!$D$23
DilNbUXGet1b Dilutions!$J$23
DilNbUXParGr1a Dilutions!$D$14
DilNbUXParGr1b Dilutions!$J$12
DilNbUXParGr1c Dilutions!$P$12
DilVerdict1a Dilutions!$F$4
DilVerdict1b Dilutions!$L$4
DilVerdict1c Dilutions!$R$4
DilVolS1a Dilutions!$D$10
DilVolS1b Dilutions!$J$7
DilVolS1c Dilutions!$P$7

JP
 
Re : Problème incompréhensible dans un contrôle de saisies

Bonjour

Quand des zones sont fusionnées il faut prendre la première valeur.

If Target.Row = 7 Then Exit Sub

Ou peut utiliser une procédure comme ci dessous, ce qui permet de personnaliser les tests

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellName As String, celda1 As Range, celda2 As Range
If Not Application.Intersect(Target, Range("a1:r35")) Is Nothing Then
    Application.EnableEvents = False
On Error Resume Next
Select Case Target.Address
Case "$L$6", "$R$6"

Case "$D$12", "$J$12", "$P$12"

Case "$J$10", "$P$10", "$D$10"

Case "$D$7", "$P$7", "$J$7"
Case "$D$23", "$J$23"
    'Si la saisie est erronée (LA VALEUR 0 EST EN REVANCHE AUTORISÉE) --> "? ? ?"
    If ControleSaisie(Target, 0) = 1 Then Target = "? ? ?"
    
Case "$D$14"
Case "$F$4"
Case "$L$4"
Case "$R$4"

End Select
End If
Target.Select


Application.EnableEvents = True
End Sub
Sub ess() ' macro à laisser pendant la phase de test
Application.EnableEvents = True
End Sub

Jp
 
Dernière édition:
Re : Problème incompréhensible dans un contrôle de saisies

Bonjour jp14,

Merci pour l'intérêt que tu as porté pour m'aider à résoudre ce casse-tête.

J'ai fini par trouver une solution très simple et très courte au moyen d'une condition lapidaire.
Voir la macro dans le module de feuille.

Bonne journée.
 

Pièces jointes

- 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

F
  • Question Question
Réponses
3
Affichages
1 K
L
Réponses
1
Affichages
1 K
Lucien31
L
A
Réponses
0
Affichages
922
ajless
A
Retour