Rendre une colonne et une ligne obligatoire ?

mattwarend

XLDnaute Junior
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

  • TESTRep&PropDataV1.xls
    32.5 KB · Affichages: 80

mromain

XLDnaute Barbatruc
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+
 

mattwarend

XLDnaute Junior
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...
 

mromain

XLDnaute Barbatruc
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+
 

mattwarend

XLDnaute Junior
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
 

mattwarend

XLDnaute Junior
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"
 

mromain

XLDnaute Barbatruc
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

  • Classeur1.zip
    15.1 KB · Affichages: 44
  • Classeur1.zip
    15.1 KB · Affichages: 52
  • Classeur1.zip
    15.1 KB · Affichages: 52

mromain

XLDnaute Barbatruc
Re : Rendre une colonne et une ligne obligatoire ?

re,

je t'ai rajouté des commentaires au code.

a+
 

Pièces jointes

  • Classeur1.zip
    16.6 KB · Affichages: 49
  • Classeur1.zip
    16.6 KB · Affichages: 42
  • Classeur1.zip
    16.6 KB · Affichages: 43

mattwarend

XLDnaute Junior
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.
@+
 

mromain

XLDnaute Barbatruc
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+
 

mattwarend

XLDnaute Junior
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

  • Fichier.zip
    18.1 KB · Affichages: 50
  • Fichier.zip
    18.1 KB · Affichages: 49
  • Fichier.zip
    18.1 KB · Affichages: 50
Dernière édition:

mromain

XLDnaute Barbatruc
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+
 

mattwarend

XLDnaute Junior
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 édition:

Discussions similaires