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 !