Effacer le contenu d'une colonne en fonction de la valeur d'une cellule
1 réponse
happyness
Bonjour,
J'ai créé un fichier d'inscription aux repas. Jusqu'ici, j'ai pu me débrouiller sans macro grâce aux différentes possibilités d'Excel. Mais là, j'ai un soucis...
J'aurais besoin d'effacer le contenu d'une colonne en fonction de la date (qui se trouve affichée dans une cellule).
Pour résumer: J'ai un tableau reprenant tous les noms de personnes (verticalement) et ensuite 31 colonnes, chacune représentant un jour du mois.
Lorsque le jour change, la cellule prend 1 mois de +. Ainsi, aujourd'hui, il est écrit "08/12/08", demain, cette même cellule contiendra "08/01/09" (merci les formules).
Mon problème est que lorsque cela change, je dois effacer les inscriptions.
J'ai donc pensé à une macro évènementielle mais j'avoue que c'est très loin tout ça :-(
En cherchant, j'ai trouvé que
Range (A10:A15).ClearContents
devrait suffir à effacer le contenu. Mais comment dire que pour chaque colonne, lorsque la cellule XXX5 contient 1 alors on efface?
Un truc du style:
for i=1 to 31
if A5=1
then Range (A10:A15).ClearContents
endif
next
Question 1: comment dire "au next, la colonne n'est plus A mais B" et ainsi de suite?
Question 2: où placer la macro?
Dsl de poser des questions aussi évidentes mais c'est tellement loin tout ça :-(
Merci d'avance pour votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut à toi
Je suppose que for i=1 to 31
représente l'ensemble de tes colonnes à traiter
Donc il faut mettre :
For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next Je mettrai ta macro dans le VBA de la feuille (Alt+F11) avec un code évennement basé sur le changement de la valeur d'une cellule ainsi
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 5 Then For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next End If End Sub
Je suis parti du principe que la date qui évolue est en ligne 5
Maintenant si les cellules de cette ligne sont avec des formules il faut utiliser cet autre évennement :
Private Sub Worksheet_Calculate() For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next End Sub
Celà devrait te convenir
Dis moi !!!
Salut à toi
Je suppose que
for i=1 to 31
représente l'ensemble de tes colonnes à traiter
Donc il faut mettre :
For i = 1 To 31
If Cells(5, i) = 5 Then
Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents
End If
Next
Je mettrai ta macro dans le VBA de la feuille (Alt+F11) avec un code
évennement basé sur le changement de la valeur d'une cellule ainsi
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 5 Then
For i = 1 To 31
If Cells(5, i) = 5 Then
Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents
End If
Next
End If
End Sub
Je suis parti du principe que la date qui évolue est en ligne 5
Maintenant si les cellules de cette ligne sont avec des formules il faut
utiliser cet autre évennement :
Private Sub Worksheet_Calculate()
For i = 1 To 31
If Cells(5, i) = 5 Then
Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents
End If
Next
End Sub
For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next Je mettrai ta macro dans le VBA de la feuille (Alt+F11) avec un code évennement basé sur le changement de la valeur d'une cellule ainsi
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 5 Then For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next End If End Sub
Je suis parti du principe que la date qui évolue est en ligne 5
Maintenant si les cellules de cette ligne sont avec des formules il faut utiliser cet autre évennement :
Private Sub Worksheet_Calculate() For i = 1 To 31 If Cells(5, i) = 5 Then Range(Cells(10, i).Address, Cells(15, i).Address).ClearContents End If Next End Sub