Macro.Empêcher saisie d'une cellule si une autre est déjà renseignée

Résolu
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 juin 2009 - 21 mai 2009 à 10:22
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 juin 2009 - 23 mai 2009 à 17:13
Bonjour à tous.
Merci d'avance pour l'attention que vous voudrez bien porter à mon problème.
Systhème d'exploitation :Windows vista    Excel 2007
Je désire empêcher la sélection d'une cellule si une autre est déjà renseignée.
Voici la macro que j'ai programmée. Mon problème est que c'est toujours la cellule B2 qui s'efface alors que suivant la cellule saisie il faudrait que ce soit la cellule B2 qui s'efface ou la cellule C2.
1) y a t-il une solution ?
2) où est le problème ? 
Merci

Berrot

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
    If Range("C2") <> 0 Then
    If Range("B2") <> 0 Then
    Application.EnableEvents = False
    MsgBox "ERREUR (C2) DEJA SAUSIE !"
     Range("B2").Value = Empty
     End If
     End If
    
    
     If Range("B2") <> 0 Then
    If Range("C2") <> 0 Then
    Application.EnableEvents = False
    MsgBox "ERREUR (B2) DEJA SAUSIE !"
     Range("C2").Value = Empty
    
     End If
     End If
    Application.EnableEvents = True
    End Sub

4 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
22 mai 2009 à 22:49
Bonsoir,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)



If Target.Row < 2 Or Target.Row > 15 Or Target.Column = 1 Then
    Exit Sub
ElseIf Target.Column = 2 And Target.Next(1, 1) <> vbNullString Then
    Target.Next(1, 1).Select
ElseIf Target.Column = 3 And Target.Previous(1, 1) <> vbNullString Then
    Target.Previous(1, 1).Select
End If



End Sub



Amicalement,
Us.
3
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
21 mai 2009 à 18:13
Bonjour
Ce serait plutôt l'évènement "Change" à utiliser

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target = Range("B2") Then
 
    If Range("C2") <> 0 Then
        Application.EnableEvents = False
        MsgBox "ERREUR (C2) DEJA SAISIE !"
        Range("B2").Value = Empty
    End If
   
  ElseIf Target = Range("C2") Then
 
    If Range("B2") <> 0 Then
        Application.EnableEvents = False
        MsgBox "ERREUR (B2) DEJA SAISIE !"
        Range("C2").Value = Empty
    End If
  End If

  Application.EnableEvents = True
End Sub

CNTJC
0
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 juin 2009
22 mai 2009 à 09:07
Bonjour CNT
Merci pour votre réponse rapide.
J'ai essayé votre macro. Le problème reste identique mais en plus si"C2" est saisi et que je saisis n'importe quelle cellule dans la feuille, par exemple E12 ou autre et qu'ensuite j'efface E12 le message d'erreur apparaît.
En fait j'ai 2 colonnes : B2:B15  et  C2:C15 .
Ce que j'aurais voulu c'est que , si je saisis C2 il soit impossible de saisir B2 uniquement  et si je saisis B2 il soit impossible de saisir  C2 uniquement. Et idem pour B3 par rapport à C3 ou C3 par rapport à B3 et ainsi de suite jusqu'à la ligne 15.

Excusez-moi mais peut-être me suis-je mal expliqué dans mon premier message.
Merci pour votre compréhension et votre patience.
Berrot
0
cs_Berrot Messages postés 7 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 20 juin 2009
23 mai 2009 à 17:13
Bonsoir.

Merci US_30 exactement ce que je voulais.Ca fonctionne super bien. 
peut-être aurais-je encore besoin de vos services.

très cordialement
Berrot (Robert)
0
Rejoignez-nous