Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Effacer le contenu d'une ligne sous condition

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 !

loulou45200

XLDnaute Nouveau
Bonjour,

Je travaille sur un fichier que je souhaiterais automatiser. Il s'agit d'un tableau de données occupant constamment la plage A1 à I122.

Ce que je souhaite faire :

Si la valeur de la cellule H4 est remplie, je veux effacer le contenu des cellules (pas la ligne) allant de A4 à F4 pour que je puisse continuer à remplir mon fichier.

Je ne parviens pas à écrire un code qui s'exécute correctement car je n'y connais strictement rien en macro ou VBA. Si quelqu'un pouvais m'apporter un peu d'aide, j'en serai très heureux !
 
Re : Effacer le contenu d'une ligne sous condition

Essaye ça :
Alt+F11 pour aller sur VBA
Dans VBAProject (à gauche de l'écran), sélectionne la feuille que tu veux modifier (exemple : Feuil1)
A droite de l'écran, tu choisis Worksheet dans la 1° liste déroulante, puis Change dans la 2° liste déroulante.

Et tu rentres ce code :
Code:
If Target.Address = Range("H4").Address Then     ' si changement en H4 alors
    If Target <> "" Then     ' si la cible est remplie
        Range("A4:F4") = ""     ' alors on efface le contenu des cellules A4 à F4
    End If
End If


Cela devrait faire ce que tu veux 😉
 
Dernière édition:
Re : Effacer le contenu d'une ligne sous condition

Salut loulou45200, unrender et le forum
Une autre version :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "H4" And Target <> "" Then
    [A4:F4].ClearContents
    [A4].Activate
End Sub
Si l'adresse (Address) relative (0,0) des cellules modifiées (Target) est égale à H4 et que H4 n'est pas vide alors
effacer le contenu (ClearContents) de la plage A4:F4
Activer la cellule A4

Les code Excel Mac et Windows sont similaires sur la plupart des instructions.
Ne connaissant pas le fichier, j'ai simplement répondu à la question. Mais je m'en pose des questions
Si la valeur de la cellule H4 est remplie, je veux effacer le contenu des cellules (pas la ligne) allant de A4 à F4 pour que je puisse continuer à remplir mon fichier.
Ce que je crois comprendre, c'est que sur une plage de la ligne 1 à la ligne 122, j'ai à remplir les cellules de A à H et que quand j'ai finis une ligne, le curseur retourne en A à la ligne supérieure et j'efface les cellules de A à H, pour que je sache où j'en suis.
Avec un tel raisonnement, on aurait une macro (toujours dans le module lié à la feuille) du style :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 Then
    If Not (Intersect(Target, [H1:H121]) Is Nothing) And Target <> "" Then
        Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).ClearContents
        Cells(Target.Row + 1, "A").Activate
    End If
End If
End Sub
A+
 
Re : Effacer le contenu d'une ligne sous condition

Bonjour,

Après plusieurs essais, je me suis rendu compte que la formule VBA donnée plus haut fonctionne pour les cellules de la ligne 4 mais comment la faire fonctionner pour les autres lignes ? Il faut que je fasse une formule VBA pour toutes les lignes ?

De plus, dans la formule VBA donnée plus haut, la plage "A4:F4" s'efface lorsque que la cellule "H4" est remplie. Je souhaiterai savoir s'il est possible de faire effacer la plage "A4:F4" ainsi que la cellule "H4" sans effacer la cellule "G4" ?

Je ne sais pas si je suis assez clair sur ce que je veux faire mais c'est difficile à expliquer par écrit...

Je remercie par avance ceux qui pourrons m'aider...
 
Re : Effacer le contenu d'une ligne sous condition

Salut loulou45200 et le forum
Après plusieurs essais, je me suis rendu compte que la formule VBA donnée plus haut fonctionne pour les cellules de la ligne 4
Ouais, mais...
Il n'y a aucune formule, juste du code
et vu la prolifération, tu parles duquel ?

Petit rappel : il n'y a aucun devin ni aucun télépathe sur ce site ! On essaie de solutionner le problème donné dans le sujet. Et s'il a une description qui n'inclue que des adresses précises, on répond sur ces adresses !
Ma deuxième WorkSheet_Change est une macro qui ne tient pas compte de telles limites.

Avant de demander de nouvelles solutions, il serait de bon ton de lire complétement les réponses déjà données, de les testées et de préciser ce qui ne va pas en expliquant quel est le code incriminé !
A+
 
Dernière édition:
Re : Effacer le contenu d'une ligne sous condition

Bonjour Gorfael,

Je te remercie pour ta réponse rapide, contrairement à ce que tu as mis dans ton dernier message, j'ai essayé toutes les formules proposées.
Le code suivant fait ce que je veux mais... il efface la plage "A:H"...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 Then
If Not (Intersect(Target, [H1:H121]) Is Nothing) And Target <> "" Then
Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).ClearContents
Cells(Target.Row + 1, "A").Activate
End If
End If
End Sub

Comme tu me l'as dit dans ton dernier message, ce n'est peut etre pas possible d'effacer la plage "A:H" sans effacer la cellule "G" (chose que je veux faire car dans les cellules "G" il y a une formule qui ne doit pas être éffacée)

Pour mieux expliquer mon problème, je joins un exemple de mon fichier...

En esperant que ce sera un peu plus clair, au pire, je passerai pour un gros nul et lourd qui ne comprend rien mais au moins j'aurais essayé.

Désolé et merci à ceux qui répondront à ma requête...
 

Pièces jointes

Re : Effacer le contenu d'une ligne sous condition

Salut loulou45200 et le forum
Pense à utiliser les balises de code (icone # rn mode avancé)
L'important est de bien comprendre le code, ce qui permet de l'adapter aux besoins
Code:
Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).ClearContents
Effacer le contenu (ClearContents) de la plage (Range) de la cellule Ax cells(x ,"A") à la cellule Hx Cells(x, "H") , avec x= target.row.
Sue Excel il y a plusieurs moyen d'écrire la plage à effacer, mais une des plus simple consiste à séparer les plages discontinues
Code:
Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).ClearContents
Cells(Target.Row, "H").ClearContents
A+
 
- 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

Discussions similaires

Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…