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,

sans passer par la TextBox, je ne vois pas trop comment faire...

a+

Merci pour ta réponse mromain.
Ok, je vais faire avec la textbox mais il doit y avoir un petit soucis dans le code car une fois avoir renseigné la textbox, le texte n'apparaît pas dans la cellule.
En fait, ce que je voudrais c'est que le texte renseigné dans la textbox remplisse la ligne dans la colonne C correspondante au nom en rouge.
Possible de mettre de contrôle en plus genre pas de caractères accentués, pas d'espace, seul les caractères - et _ autorisés ?
Après c'est fini ! Promit ! 😉
 
Re : Rendre une colonne et une ligne obligatoire ?

re,

essaye avec ce code (toujours au niveau de 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)
        NettoyerString nouveauNomRepertoire
    Loop Until Len(nouveauNomRepertoire) <= 15
    'saisir la nouvelle valeur en colonne B
    Range("B" & Target.Row).Value = nouveauNomRepertoire
End If
End Sub

Sub NettoyerString(leString As String)
Dim interdits, i As Integer
interdits = Array(" ", "é", "è", "ù", "à", "â", "ô", "î", "ï", "ë", "ê")
For i = LBound(interdits) To UBound(interdits)
    leString = Replace(leString, interdits(i), vbNullString)
Next i
End Sub

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

re,

essaye avec ce code (toujours au niveau de 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)
        NettoyerString nouveauNomRepertoire
    Loop Until Len(nouveauNomRepertoire) <= 15
    'saisir la nouvelle valeur en colonne B
    Range("B" & Target.Row).Value = nouveauNomRepertoire
End If
End Sub

Sub NettoyerString(leString As String)
Dim interdits, i As Integer
interdits = Array(" ", "é", "è", "ù", "à", "â", "ô", "î", "ï", "ë", "ê")
For i = LBound(interdits) To UBound(interdits)
    leString = Replace(leString, interdits(i), vbNullString)
Next i
End Sub

a+

J'ai modifié le code comme indiqué mais la cellule de la colonne C correspondante ne se rempli pas et le contrôle sur les caractère non plus.
Je t'ai mis le fichier modifié en PJ
 

Pièces jointes

Re : Rendre une colonne et une ligne obligatoire ?

re,

il y avait un petit truc à modifier (pas très compliqué à voir (je pense)) :
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)
        NettoyerString nouveauNomRepertoire
    Loop Until Len(nouveauNomRepertoire) <= 15
    [B]'saisir la nouvelle valeur en colonne [COLOR=Red]C[/COLOR][/B]
    [B]Range("[COLOR=Red]C[/COLOR]" & Target.Row).Value = nouveauNomRepertoire[/B]
End If
End Sub

Sub NettoyerString(leString As String)
Dim interdits, i As Integer
interdits = Array(" ", "é", "è", "ù", "à", "â", "ô", "î", "ï", "ë", "ê")
For i = LBound(interdits) To UBound(interdits)
    leString = Replace(leString, interdits(i), vbNullString)
Next i
End Sub

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

re,

il y avait un petit truc à modifier (pas très compliqué à voir (je pense)) :
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)
        NettoyerString nouveauNomRepertoire
    Loop Until Len(nouveauNomRepertoire) <= 15
    [B]'saisir la nouvelle valeur en colonne [COLOR=Red]C[/COLOR][/B]
    [B]Range("[COLOR=Red]C[/COLOR]" & Target.Row).Value = nouveauNomRepertoire[/B]
End If
End Sub

Sub NettoyerString(leString As String)
Dim interdits, i As Integer
interdits = Array(" ", "é", "è", "ù", "à", "â", "ô", "î", "ï", "ë", "ê")
For i = LBound(interdits) To UBound(interdits)
    leString = Replace(leString, interdits(i), vbNullString)
Next i
End Sub

a+

Super, trop fort !
Merci, je vais pouvoir avancer !
@+
 
- 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