Effacer valeur liste déroulante

Bonjour tout le monde,

Petit soucis du jour, j'ai mon fichier avec mes listes déroulantes dans l'onglet "Généralités", j'aimerais que lorsque A2 change alors mes listes déroulantes commençant en A8 et finissant pour le moment à A15 (j'aimerais adapter cette partie avec le xlUp ou xlDown) repasse à vide.

De même si je change la valeur de la cellule à partir de A8 alors les cellules jumelles repasse à vide aussi (de même ne sachant pas où peut se terminer les données dans le tableau commençant en A8), il faudrait que je rende la chose "dynamique"

Exemple :

Je modifie A8 alors B8/C8/D8/E8/F8 sont de nouveaux vides

Merci d'avance à vous et bonne journée !

Bonjour,

A adapter ?

Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
    If Not Intersect(Target, Me.Columns(1)) Is Nothing And Target.CountLarge = 1 Then
        Select Case Target.Address
            Case "$A$2":
                Set r = Me.UsedRange.SpecialCells(xlCellTypeAllValidation)
                If Not r Is Nothing Then r.ClearContents
            Case Else:
                If IsEmpty(Target) Then Target.Offset(, 1).Resize(, 5).ClearContents
        End Select
    End If
End Sub

Hello Jean-Eric,

ça m'a l'air carrément fonctionnel :)

Serait-il possible que tu m'expliques un peu ton code ? via des commentaires par exemple ? Si ça te dérange pas

Car j'aimerais voir pour l'adapter si je modifie A8 alors je clear les cellules B8/C8/D8/E8/F8, pour le moment j'ai un code sur une autre feuille dans ce style :

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 1 And Target.Validation.Type = 3 Then
        Target.Offset(0, 1).Value = ""
        Target.Offset(0, 2).Value = ""
        Target.Offset(0, 4).Value = ""
    End If
    Application.EnableEvents = True
End Sub

Mais bon je suis clairement pas sûr que ce soit le plus propre et le moins lourd

Merci d'avance à toi !

Cordialement

Je ne parviens pas à éditer mon message, je vais donc y répondre.

Finalement mon propre code

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 1 And Target.Validation.Type = 3 Then
        Target.Offset(0, 1).Value = ""
        Target.Offset(0, 2).Value = ""
        Target.Offset(0, 4).Value = ""
    End If
    Application.EnableEvents = True
End Sub

Ne fonctionne pas si bien ... En effet, j'ai des colonnes à remplir manuellement et non via une liste déroulante du coup j'ai un problème avec ma macro qui sort une erreur 1004 sur la ligne

 If Target.Column = 1 And Target.Validation.Type = 3 Then

Le Target.Validation.Type = 3 doit être le soucis ... mais je ne sais pas comment le transformer

EDIT :

Je viens de réussir pour cette partie avec le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, [A2:A400]) Is Nothing Then
        For I = 1 To 7
            Target.Offset(0, I).Value = ""
        Next I
    End If
    Application.EnableEvents = True
End Sub

Je pense qu'on peut faire plus beau mais bon en attendant ça me dépanne ;)

Si quelqu'un à mieux je suis preneur :) je vais voir pour adapter la partie (Target, [A2:A400]) avec xlUp ou Down mais je maîtrise pas très bien ça

Hello tout le monde,

Je continue à maintenir à jour la demande avec mes avancées

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Range("A2:A" & Cells(Rows.Count, Target.Column).End(xlUp).Row)) Is Nothing Then
        For I = 1 To 7
            Target.Offset(0, I).Value = ""
        Next I
    End If
    Application.EnableEvents = True
End Sub

J'ai donc réussis sur l'un des onglets à faire ce que je voulais

Mais par contre, sur mon onglet général je sais toujours pas intégrer au code de Jean-Eric :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
    If Not Intersect(Target, Me.Columns(1)) Is Nothing And Target.CountLarge = 1 Then
        Select Case Target.Address
            Case "$A$2":
                Set r = Me.UsedRange.SpecialCells(xlCellTypeAllValidation)
                If Not r Is Nothing Then r.ClearContents
            Case Else:
                If IsEmpty(Target) Then Target.Offset(, 1).Resize(, 5).ClearContents
        End Select
    End If
End Sub

Ma volonté que si je change A8 alors B8/C8/D8/E8/F8 redeviennent vide (en sachant que ce n'est pas que pour A8 c'est pour le tableau qui commence de A8 jusque potentiellement le bas du fichier fonctionne pareil). J'ai essayé de réadapter mon code de mon autre onglet (mit précédemment) mais sans résultat j'obtiens une erreur

Donc si quelqu'un gère mieux que moi je suis preneur (même pour revoir mon propre code haha). En attendant je continue de chercher de mon côté sait-on jamais !

Bonne journée !

Rechercher des sujets similaires à "effacer valeur liste deroulante"