forcer à ne saisir qu'une cellule parmis plusieurs

dadaboss92

XLDnaute Nouveau
Bonjour,

Premier post. J'ai galéré grave je trouve pas. Voici mon prob :
A1
A2
A3
A4

Je veux forcer l'utilisateur à ne remplir qu'une de ces cellules. S'il en remplit deux il faut que ça affiche un message d'erreur.

Merci de votre aide
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : forcer à ne saisir qu'une cellule parmis plusieurs

Bonjour Dadaboss et bienvenu, bonjour voisin, bonjour le forum,

Comme tu es nouveau parmi nous, je te recommande de lire la
Lien supprimé du forum qui donne tous les bons plans pour obtenir de l'aide rapidement...
En pièce jointe un petit exemple avec la macro événementielle Change ci-dessous :
Code:
Private test As Boolean 'déclare la variable test

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If test = True Then Exit Sub 'si test est vraie, sort de la procédure (évite la bocle sur l'événement "Change")
If Application.WorksheetFunction.CountA(Range("A1:A4")) > 1 Then 'condition : si le nombre de valeurs dans la plage A1:A4 est supérieur à une
    test = True 'définit la variable test
    Target.ClearContents 'éfface la cellule modifiée (relance la procédure "Change")
    MsgBox "Vous ne pouvez éditer qu'une seule cellule dans la plage A1:A4 !" 'message
    test = False 'redéfinit la variable test
End If 'fin de la condition
End Sub
Le fichier :
 

Pièces jointes

  • Dadaboss_v01.xls
    22 KB · Affichages: 20
Dernière édition:

kjin

XLDnaute Barbatruc
Re : forcer à ne saisir qu'une cellule parmis plusieurs

re, salut Robert :), tu parles aussi le Dadaboss !,
Mais à la lueur de ce que tu viens d'écrire, il me semble qu'il faut déclarer le flag, dans une variable public et dans un module standard, ou mettre le résultat en IV65000
Désolé, je ne maitrise pas encore le Dadaboss
A+
kjin
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : forcer à ne saisir qu'une cellule parmis plusieurs

Bonjour le fil, bonjour le forum,

re, salut Robert :), tu parles aussi le Dadaboss !,
Mais à la lueur de ce que tu viens d'écrire, il me semble qu'il faut déclarer le flag, dans une variable public et dans un module standard, ou mettre le résultat en IV65000
Désolé, je ne maitrise pas encore le Dadaboss
A+
kjin

Pffff ! Si tu sortais un peu et venais à Sète tu saurais qu'il existe un magasin où l'on trouve des décodeurs de Dadaboss pour que dalle...
Sinon, J'ai toujours déclaré ma variable test comme Private comme dans l'exemple, en dehors de la procédure, et ça a toujours fonctionné... Pourquoi cela ne devrait-il pas fonctionner ?
 

kjin

XLDnaute Barbatruc
Re : forcer à ne saisir qu'une cellule parmis plusieurs

Re,
Vous êtes sévères c'était à mes yeux totalement compréhensible par tout autochtone.
Et en plus il nous insulte....

Pffff ! Si tu sortais un peu et venais à Sète
désolé, je n'ai pas de passe port !

dans un module standard...
Code:
Public flag As Boolean
...et dans le module de la feuillle
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [a1:a4]) Is Nothing And Not flag Then
    flag = True
Else
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
End If
End Sub
A+
kjin
 

Discussions similaires

Réponses
0
Affichages
996

Statistiques des forums

Discussions
312 505
Messages
2 089 092
Membres
104 028
dernier inscrit
alain Barthe