Effacer contenu et bordures de cellules d'une plage
Roland
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais par une macro VBA effacer le contenu et les bordures de cellules d'une partie de la plage M37:AJ147, depuis la cellule contenant la plus grande valeur de la colonne AJ, jusqu'à la fin de cette plage. Ceci sans supprimer de lignes.
Exemple :
dans la plage M37:AJ147 dans la colonne AJ, la cellule AJ100 contient la plus grande valeur
alors le contenu et et les bordures de M100:AJ147 sont effacés, la couleur de fond restant la même.
Merci
Je souhaiterais par une macro VBA effacer le contenu et les bordures de cellules d'une partie de la plage M37:AJ147, depuis la cellule contenant la plus grande valeur de la colonne AJ, jusqu'à la fin de cette plage. Ceci sans supprimer de lignes.
Exemple :
dans la plage M37:AJ147 dans la colonne AJ, la cellule AJ100 contient la plus grande valeur
alors le contenu et et les bordures de M100:AJ147 sont effacés, la couleur de fond restant la même.
Merci
A voir également:
- Vba effacer une plage de cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Effacer les données de navigation sur android - Guide
- Comment effacer une page word - Guide
- Verrouiller cellules excel - Guide
- Excel compter cellule couleur sans vba - Guide
13 réponses
Bonjour
Une macro à adapter
Cdlmnt
Une macro à adapter
Const plage = "A2:G22" Const coco = "G" Sub ok() Dim paef As Range, m, obj As Object Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long m = Application.WorksheetFunction.Max(Columns(coco)) Set obj = Columns(coco).Find(m, , , xlWhole) lideb = obj.Row lifin = Range(Split(plage, ":")(1)).Row codeb = Range(Split(plage, ":")(0)).Column cofin = Range(Split(plage, ":")(1)).Column Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin)) paef.Value = "" paef.Borders.LineStyle = xlNone End Sub
Cdlmnt
Bonjour
Merci de votre réponse.
Lorsque je veux appliquer la macro il s'affiche le message suivant : "Erreur de compilation : End Sub attendu"
La macro se présente ainsi :
Const plage = "M37:AJ147"
Const coco = "AJ"
Sub ok()
Dim paef As Range, m, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Columns(coco))
Set obj = Columns(coco).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(plage, ":")(1)).Row
codeb = Range(Split(plage, ":")(0)).Column
cofin = Range(Split(plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
End Sub
Comment résoudre ce problème?
Merci de votre réponse.
Lorsque je veux appliquer la macro il s'affiche le message suivant : "Erreur de compilation : End Sub attendu"
La macro se présente ainsi :
Const plage = "M37:AJ147"
Const coco = "AJ"
Sub ok()
Dim paef As Range, m, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Columns(coco))
Set obj = Columns(coco).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(plage, ":")(1)).Row
codeb = Range(Split(plage, ":")(0)).Column
cofin = Range(Split(plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
End Sub
Comment résoudre ce problème?
Lorsque je veux appliquer la macro il s'affiche le message suivant : "Erreur de compilation : End Sub attendu"
Bizarre, chez moi, j'ai quand même recopié ton code dans un module, j'ai pu le compiler et l'exécuter sans erreur.
N'aurais tu pas d'autres macros dans ton module ?
Sinon envoies ton fichier via cjoint.com
Cdlmnt
Bizarre, chez moi, j'ai quand même recopié ton code dans un module, j'ai pu le compiler et l'exécuter sans erreur.
N'aurais tu pas d'autres macros dans ton module ?
Sinon envoies ton fichier via cjoint.com
Cdlmnt
Bonjour CCM81
Je joins le fichier. Je suis sur Excel 2000.
Cliquer sur Outils Macros fait apparaître une liste de 3 macros ("Deuxnuminsertion", "Numéros", "OK"), un clic sur Visual Basic Editor permet de voir les modules, dont deux contiennent des macros (Module 6 : "Deuxnuminsertion"; Module 5 : "Numéros").
J'ai 3 macros dans la liste des macros et 2 dans les modules. Le problème vient-il de là?
Cordialement
http://www.cjoint.com/c/EKvopxAkGIY
Je joins le fichier. Je suis sur Excel 2000.
Cliquer sur Outils Macros fait apparaître une liste de 3 macros ("Deuxnuminsertion", "Numéros", "OK"), un clic sur Visual Basic Editor permet de voir les modules, dont deux contiennent des macros (Module 6 : "Deuxnuminsertion"; Module 5 : "Numéros").
J'ai 3 macros dans la liste des macros et 2 dans les modules. Le problème vient-il de là?
Cordialement
http://www.cjoint.com/c/EKvopxAkGIY
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu supprimes ces lignes, qui déclarent une procedure dont il n'y a ni le corps (le code proprement dit) ni la fin (end sub)
Sub Deuxnuminsertion()
'
' Deuxnuminsertion Macro
' Macro enregistrée le 21/11/2015 par Roland
'
'
RQ. Tu as quelques modules vides que tu peux supprimer
Cdlmnt
Sub Deuxnuminsertion()
'
' Deuxnuminsertion Macro
' Macro enregistrée le 21/11/2015 par Roland
'
'
RQ. Tu as quelques modules vides que tu peux supprimer
Cdlmnt
Bonjour CCM 81
J'ai effectué les modifications présentées dans le fichier joint. Il apparaît le message "Erreur d'exécution 91 - variable ou objet de bloc With non définie".
Le débogueur surligne en jaune la ligne "libed = objet.Row".
J'ai du faire quelque part une opération qui bloque la macro.
Cdlmt
http://www.cjoint.com/c/EKxksb7HEgY
J'ai effectué les modifications présentées dans le fichier joint. Il apparaît le message "Erreur d'exécution 91 - variable ou objet de bloc With non définie".
Le débogueur surligne en jaune la ligne "libed = objet.Row".
J'ai du faire quelque part une opération qui bloque la macro.
Cdlmt
http://www.cjoint.com/c/EKxksb7HEgY
Dans la déclaration des variables, modifies le type de la variable m comme ceci
Dim paef As Range, m As Date, obj As Object
Cdlmnt
Dim paef As Range, m As Date, obj As Object
Cdlmnt
Bonjour CCM81
La macro fonctionne mais il y a un problème exposé dans le fichier joint.
Cdlmt
http://www.cjoint.com/c/EKywbVeRHiY
La macro fonctionne mais il y a un problème exposé dans le fichier joint.
Cdlmt
http://www.cjoint.com/c/EKywbVeRHiY
1. Pour ce qui est de la couleur, tu ajoutes le ligne souligée
2. Pour ce qui est de l'erreur, je crois qu'elle provient du fait qu'en AI160 tu as une valeur qui n'a rien à voir avec les dates du début de colonne.
Essaies ceci
Cdlmnt
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
2. Pour ce qui est de l'erreur, je crois qu'elle provient du fait qu'en AI160 tu as une valeur qui n'a rien à voir avec les dates du début de colonne.
Essaies ceci
Const Plage = "M37:AI147"
Const coco = "AI1:AI150"
Sub ok()
Dim paef As Range, m As Date, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Range(codate))
Set obj = Range(codate).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(Plage, ":")(1)).Row
codeb = Range(Split(Plage, ":")(0)).Column
cofin = Range(Split(Plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
Cdlmnt
Bonjour ccm81
Pour la suppression recherchée j'avais toujours des messages d'erreur lorsque le remplissage à partir de la ligne 837 était présent. J 'ai fini par déplacé la plage M162:AI2004 de façon à laisser cette plage vide. La macro fonctionne alors de cette manière (pourquoi?).
La macro transforme bien la coloration du fond des cellules colorées en fond blanc.
Cordialement
Pour la suppression recherchée j'avais toujours des messages d'erreur lorsque le remplissage à partir de la ligne 837 était présent. J 'ai fini par déplacé la plage M162:AI2004 de façon à laisser cette plage vide. La macro fonctionne alors de cette manière (pourquoi?).
La macro transforme bien la coloration du fond des cellules colorées en fond blanc.
Cordialement
Il y avait un bug ici (un collage prématuré !)
Cdlmnt
Const Plage = "M37:AI147"
Const coco = "AI1:AI150"
Sub ok()
Dim paef As Range, m As Date, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Range(coco))
Set obj = Range(coco).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(Plage, ":")(1)).Row
codeb = Range(Split(Plage, ":")(0)).Column
cofin = Range(Split(Plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
Cdlmnt