Contrôle de saisie dans des cellules

lenul78570

XLDnaute Nouveau
Bonjour,

Sur une feuille nommée « Prospects » je veux rendre obligatoire la saisie de certaines cellules avant de pouvoir lancer une macro sur un clic bouton.
Cette obligation doit être présente de la ligne 12 à ligne 2012 pour les colonnes A ; B ; C ; D ; F ; I ; L.
Colonnes « A, B, D, F, L » saisie de texte
Colonne « C » formatée pour recevoir du code postal
Colonne « I » formatée pour recevoir numéro de téléphone
J’ai fait le code ci-dessous qui fonctionne. Exemple si on saisie du texte dans B12, lorsque l'on veut aller en C13, mais que A12 est vide, le message d'erreur s'affiche.
Mais je ne sais pas comment l’éttendre aux autres colonnes….
Merci à vous.
Lenul
Code:
Private Sub worksheet_change(ByVal target As Range)
If target.Column = 2 And target.Count = 1 Then
If target.Offset(, -1).Value = Empty Then
Application.EnableEvents = False
MsgBox " Veuillez renseigner la cellule de gauche !"
target.Value = Empty
target.Offset(, -1).Select
Application.EnableEvents = True
End If
End If
If target.Column = 1 And target.Count = 1 Then
target.Offset(0, 1).Select
End If
End Sub
 

jp14

XLDnaute Barbatruc
Re : Contrôle de saisie dans des cellules

Bonjour

Un piste en utiliser "select case"
Code:
' pour les ligne 12 à 2012
If target.row > 11 and target.row < 2013 then 

select case target.Column
         case 1,2
         'code pour les colonnes 1 et 2
         case 3
         ' code pour la colonne 3
end select
end if

JP
 

lenul78570

XLDnaute Nouveau
Re : Contrôle de saisie dans des cellules

bonjour JP14
Merci de prendre du temps pour me repondre
Donc si je comprends bien
If target.row > 11 and target.row < 2013 then : sélectionne la plage de cellules concernées ?
'code pour les colonnes 1 et 2 : je dois insérer :
If target.Column = 2 And target.Count = 1 Then
If target.Offset(, -1).Value = Empty Then
Application.EnableEvents = False
MsgBox " Veuillez renseigner la cellule de gauche !"
target.Value = Empty
target.Offset(, -1).Select
Application.EnableEvents = True
End If
End If
If target.Column = 1 And target.Count = 1 Then
target.Offset(0, 1).Select
End If

Ensuite j'écris ceci:
case 3
et apres je recopie le code pour case 1,2 en actualisant pour case 3 ?
et ainsi de suite pour toute s les colonnes concernées ?
Merci de ton attention
Lenul
 

skoobi

XLDnaute Barbatruc
Re : Contrôle de saisie dans des cellules

Bonjour lenul78570,

en l'absence de jp14, que je salue :):

If target.row > 11 and target.row < 2013 then : sélectionne la plage de cellules concernées ?
Non. Cela signifie: Si la cellule modifiée se trouve entre les lignes 12 et 2012 (incluses).
Voilà ce que ça donne avec la suggestion de jp (en couleur les correspondances).

Code:
' pour les ligne 12 à 2012
If target.Count > 1 Then Exit Sub 'si la modification à lieu sur plusieurs cellules, on quitte la macro.
If target.Row > 11 And target.Row < 2013 Then

  Select Case target.Column
  Case 1
    [COLOR=Blue][B]target.Offset(0, 1).Select[/B][/COLOR]
  Case 2
   [B][COLOR=SeaGreen] If target.Offset(, -1).Value = Empty Then
      Application.EnableEvents = False
      MsgBox " Veuillez renseigner la cellule de gauche !"
      target.Value = Empty
      target.Offset(, -1).Select
      Application.EnableEvents = True
    End If[/COLOR][/B]
  Case 3
   blablabla
  Case 4, 5, 6 'si le code est le même pour les colonnes 4 à 6 par exemples
   blablabla
  End Select
End If
If target.row > 11 and target.row < 2013 then : sélectionne la plage de cellules concernées ?
'code pour les colonnes 1 et 2 : je dois insérer :
If target.Column = 2 And target.Count = 1 Then
If target.Offset(, -1).Value = Empty Then
Application.EnableEvents = False
MsgBox " Veuillez renseigner la cellule de gauche !"
target.Value = Empty
target.Offset(, -1).Select
Application.EnableEvents = True
End If

End If
If target.Column = 1 And target.Count = 1 Then
target.Offset(0, 1).Select
End If
 
Dernière édition:

lenul78570

XLDnaute Nouveau
Re : Contrôle de saisie dans des cellules

Bonjour Skoobi

Merci de venir m'aider.

blablabla =
If target.Offset(, -1).Value = Empty Then
Application.EnableEvents = False
MsgBox " Veuillez renseigner la cellule de gauche !"
target.Value = Empty
target.Offset(, -1).Select
Application.EnableEvents = True
End If


?
Bon dimanche
Lenul
 

skoobi

XLDnaute Barbatruc
Re : Contrôle de saisie dans des cellules

Re bonjour lenul 78570,

blablabla = le code que tu as prévu pour la colonne 3.
S c'est le même que pour la colonne 2, alors il suffit d'ajouter la colonne 3 ici:

Code:
.........
Case 2[COLOR=Blue][B], 3[/B][/COLOR]
..............
.........

Case 1: code pour la colonne 1 uniquement
Case 2, 3: code pour la colonne 2 et 3
Case 4: code pour la colonne 4 uniquement.

Biensûr, ce ne sont que des exemples à adapter à ton cas.

Je te conseil de regarder l'aide concernant select case.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 840
dernier inscrit
blaise09