Rendre une colonne et une ligne obligatoire ?

  • Initiateur de la discussion Initiateur de la discussion mattwarend
  • Date de début Date de début

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 !

M

mattwarend

Guest
Bonjour à tous,

Dans le fichier en PJ, je cherche à rendre obligatoire lorsque la sélection "Besoin 2009" en H2 est réalisée, les cellules F2, E2, D2.
Est-ce possible ? Si oui, comment procéder ?


Merci d'avance pour votre aide.
 

Pièces jointes

Re : Rendre une colonne et une ligne obligatoire ?

bonjour mattwarend,

je te propose ce code à mettre sur la feuille (clic droit sur l'onglet --> Visualiser le code) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("G" & Rows.Count).End(xlUp).Row
    If Range("G" & i).Text = "Besoin 2009" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox ("complétez la colonne D de la ligne " & i): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox ("complétez la colonne E de la ligne " & i): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox ("complétez la colonne F de la ligne " & i): Exit Sub
    End If
Next i
End Sub

si tu as saisi "Besoin 2009" dans la colonne G et que tu sélectionne une autre ligne sans avoir complété les colonnes D, E, et F, une MsgBox apparait.

a+
 
Re : Rendre une colonne et une ligne obligatoire ?

bonjour mattwarend,

je te propose ce code à mettre sur la feuille (clic droit sur l'onglet --> Visualiser le code) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("G" & Rows.Count).End(xlUp).Row
    If Range("G" & i).Text = "Besoin 2009" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox ("complétez la colonne D de la ligne " & i): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox ("complétez la colonne E de la ligne " & i): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox ("complétez la colonne F de la ligne " & i): Exit Sub
    End If
Next i
End Sub

si tu as saisi "Besoin 2009" dans la colonne G et que tu sélectionne une autre ligne sans avoir complété les colonnes D, E, et F, une MsgBox apparait.

a+

Salut mromain,

Merci pour ton aide.
J'ai ajouté le code que tu m'as indiqué dans la feuille en faisant clic droit sur l'onglet --> Visualiser le code.
J'ai enregistré, mais je ne vois aucune différence.
Je dois m'y être mal pris...
 
Re : Rendre une colonne et une ligne obligatoire ?

re,

autant pour moi,

essaye avec ce code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("[B][COLOR=Red]H[/COLOR][/B]" & Rows.Count).End(xlUp).Row
    If Range("[COLOR=Red][B]H[/B][/COLOR]" & i).Text = "[B][COLOR=Red]A conserver[/COLOR][/B]" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox ("complétez la colonne D de la ligne " & i): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox ("complétez la colonne E de la ligne " & i): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox ("complétez la colonne F de la ligne " & i): Exit Sub
    End If
Next i
End Sub

a+
 
Re : Rendre une colonne et une ligne obligatoire ?

Super, merci pour ta réponse. Ca répond parfaitement à mon besoin.
Y'a cependant un truc que je ne parviens pas à faire, je préfèrerais en message, "compléter la ligne X de la colonne E" mais je ne parviens pas à modifier le code...

J'ai écrit ça mais ça ne fonctionne pas :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("H" & Rows.Count).End(xlUp).Row
    If Range("H" & i).Text = "A conserver" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne D"): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne E"): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne F"): Exit Sub
    End If
Next i
End Sub
 
Re : Rendre une colonne et une ligne obligatoire ?

Super, merci pour ta réponse. Ca répond parfaitement à mon besoin.
Y'a cependant un truc que je ne parviens pas à faire, je préfèrerais en message, "compléter la ligne X de la colonne E" mais je ne parviens pas à modifier le code...

J'ai écrit ça mais ça ne fonctionne pas :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("H" & Rows.Count).End(xlUp).Row
    If Range("H" & i).Text = "A conserver" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne D"): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne E"): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne F"): Exit Sub
    End If
Next i
End Sub

... et existe t'il une méthode pour les empêcher l'enregistrement si les ligne correspondante ne sont pas affichée ?
Ou alors un message au moment où il tente d'enregistrer lui signalant, "Attention, toutes les informations obligatoires ne sont pas renseignées"
 
Re : Rendre une colonne et une ligne obligatoire ?

re,

je t'ai fait un exemple plus précis.
il y a du code à trois endroit différents :
- au niveau de la feuille (comme avant)
- au niveau du classeur (pour empêcher l'enregistrement)
- et dans le module "Module1"

a+
 

Pièces jointes

Re : Rendre une colonne et une ligne obligatoire ?

re,

je t'ai fait un exemple plus précis.
il y a du code à trois endroit différents :
- au niveau de la feuille (comme avant)
- au niveau du classeur (pour empêcher l'enregistrement)
- et dans le module "Module1"

a+

C'est parfait !!
Une petite explication que je puisse tenter de reproduire ?

Merci en tout cas ! 😎
 
Re : Rendre une colonne et une ligne obligatoire ?

Salut mromain !

Je te sollicite de nouveau car j'ai besoin d'ajouter 3 nouvelles colonnes dans le fichier.
Le problème est que quand je tente d'insérer une nouvelle colonne entre la colonne A et B, il me demande systématiquement de renseigner obligatoire une ligne comme si j'avais modifié la colonne H.
Comment procéder ?
Merci.
@+
 
Re : Rendre une colonne et une ligne obligatoire ?

bonjour mattwarend,

si tu insère des nouvelles colonnes, il faut changer la macro, ce n'est plus la colonne H qu'il faut tester (ce sera la I si tu as inséré 1 colonne avant).
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 2 To Range("[COLOR=Red][B]H[/B][/COLOR]" & Rows.Count).End(xlUp).Row
    If Range("[B][COLOR=Red]H[/COLOR][/B]" & i).Text = "A conserver" And Target.Row <> i Then
        If Range("D" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne D"): Exit Sub
        If Range("E" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne E"): Exit Sub
        If Range("F" & i).Text = vbNullString Then MsgBox (" complétez la ligne (& i) de la colonne F"): Exit Sub
    End If
Next i
End Sub

par contre, sans fichier, c'est difficile de t'aider...

a+
 
Re : Rendre une colonne et une ligne obligatoire ?

J'ai pu légèrement modifier le fichier avec les informations que tu m'as communiqué.
Je te le met en PJ comme demandé.
On peut faire en sorte que lorsque une information est changée dans la colonne I et que la ligne correspondante est rouge dans la colonne A, on oblige à saisir un nouveau nom sur la ligne correspondante dans la colonne B, avec comme maximum 15 caractères... ?
 

Pièces jointes

Dernière modification par un modérateur:
Re : Rendre une colonne et une ligne obligatoire ?

J'ai pu légèrement modifier le fichier avec les informations que tu m'as communiqué.
Je te le met en PJ comme demandé.
On peut faire en sorte que lorsque une information est changée dans la colonne I et que la ligne correspondante est rouge dans la colonne A, on oblige à saisir un nouveau nom sur la ligne correspondante dans la colonne B, avec comme maximum 15 caractères... ?
bonjour mattwarend,

essaye en rajoutant ce code sur la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nouveauNomRepertoire As String
'si ce n'est pas la colonne I qui a été modifiée, quitter la macro
If Target.Column <> 9 Then Exit Sub
'si la cellule de la même ligne, colonne A à le texte rouge, alors
If Range("A" & Target.Row).Font.ColorIndex = 3 Then
    'demander la saisie du nouveau "Nom Répertoires" (tant que > à 15 caractères)
    Do
        nouveauNomRepertoire = Application.InputBox("Saisir un nouveau ""Nom Répertoires"" (15 caractères max.) :", "Saisie", , , , , , 2)
    Loop Until Len(nouveauNomRepertoire) <= 15
    'saisir la nouvelle valeur en colonne B
    Range("B" & Target.Row).Value = nouveauNomRepertoire
End If
End Sub

a+
 
Re : Rendre une colonne et une ligne obligatoire ?

Salut ! Merci mromain.
En fait, c'est au délà de mes espérances.
Ce que je veux simplement, c'est obliger l'utilisateur à renseigner la ligne correspondante dans la colonne B quand une ligne est rouge dans la colonne A sans Texte Box.
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
192
R
  • Question Question
Réponses
3
Affichages
120
regis6460
R
Retour