Excel VBA - Supprimer une plage de cellules
Résolu/Fermé
vbadebutant
ccm81
- Messages postés
- 5
- Date d'inscription
- vendredi 22 février 2013
- Statut
- Membre
- Dernière intervention
- 28 mai 2013
ccm81
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
A voir également:
- Vba effacer une plage de cellules
- Vba effacer le contenu d'une plage de cellule - Meilleures réponses
- Excel vba effacer une plage de cellules - Meilleures réponses
- Macro VBA qui effacer une plage de cellule ✓ - Forum - VB / VBA
- Effacer les plages ✓ - Forum - VB / VBA
- Excel VBA - Supprimer une plage de cellules ✓ - Forum - Excel
- Macro Effacer Plage Cellules Non Vides ✓ - Forum - Programmation
- Excel vba effacer une plage de cellules - Forum - Excel
7 réponses
ccm81
22 févr. 2013 à 19:57
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
22 févr. 2013 à 19:57
Bonjour
Une procedure avec quelques explications
bon courage
Une procedure avec quelques explications
' colonne de reference Const codeb = "A" Public Sub EffaceFinColonne() Dim lideb As Long, adr As String, adrfin As String, plage As String With ActiveSheet lideb = 1 ' recherche de la 1° ligne vide de la colonne codeb While .Range(codeb & lideb) <> "" lideb = lideb + 1 Wend ' plage utilisée de la feuille adr = .UsedRange.Address ' dernière cellule de la plage utilisée adrfin = Split(adr, ":")(1) ' plage a effacer plage = codeb & lideb & ":" & adrfin ' effacer plage Range(plage).ClearContents End With End Sub
bon courage
vbadebutant
Modifié par vbadebutant le 22/02/2013 à 20:44
- Messages postés
- 5
- Date d'inscription
- vendredi 22 février 2013
- Statut
- Membre
- Dernière intervention
- 28 mai 2013
Modifié par vbadebutant le 22/02/2013 à 20:44
Bonjour,
Merci de m'aider. La macro ne fonctionne pas. J'ai un message d'erreur qui me dit que la fonction RANGE à la fin n'a pas un bon argument. Lorsque je vais voir le contenu de ADR, il est égal à "$A:$BK" et PLAGE = "A24453:$BK". Le permier argument, A24453, est correct.
La seule différence avec votre code est que j'ai ramené Const codeb = "A" sous Public Sub
Quelque chose que je n'ai pas copié correctement?
*****
En fait, cette routine semble me donner une plage linéaire; de A à BK. Ce dont j'ai besoin est d'une plage en forme de rectangle. Le point de départ serait A24453 mais l'autre point serait BK1048100 (par exemple)
Merci de m'aider. La macro ne fonctionne pas. J'ai un message d'erreur qui me dit que la fonction RANGE à la fin n'a pas un bon argument. Lorsque je vais voir le contenu de ADR, il est égal à "$A:$BK" et PLAGE = "A24453:$BK". Le permier argument, A24453, est correct.
La seule différence avec votre code est que j'ai ramené Const codeb = "A" sous Public Sub
Quelque chose que je n'ai pas copié correctement?
*****
En fait, cette routine semble me donner une plage linéaire; de A à BK. Ce dont j'ai besoin est d'une plage en forme de rectangle. Le point de départ serait A24453 mais l'autre point serait BK1048100 (par exemple)
ccm81
Modifié par ccm81 le 23/02/2013 à 06:31
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
Modifié par ccm81 le 23/02/2013 à 06:31
bizarre chez moi ça fonctionne bien (sous excel 2003) et adr donne l'adresse correcte de la plage utilisée (du genre $A$1:$M:$50)
essaies ceci
ou ceci pour aller plus vite
bonne journée
essaies ceci
Public Sub EffaceFinColonne() Const codeb = 1 Dim lideb As Long, adr As String, lifin As Long, cofin As Long With ActiveSheet lideb = 1 ' recherche de la 1° ligne vide de la colonne codeb While .Cells(lideb, codeb) <> "" lideb = lideb + 1 Wend ' dernière cellule utilisée de la feuille lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row cofin = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column ' effacer plage Range(.Cells(lideb, codeb), .Cells(lifin, cofin)).ClearContents End With End Sub
ou ceci pour aller plus vite
Public Sub EffaceFinColonne() Const codeb = 1 Dim lideb As Long, adr As String, v As Object With ActiveSheet lideb = 1 ' recherche de la 1° ligne vide de la colonne codeb Set v = .Range(.Cells(lideb, codeb), .Cells(Rows.Count, codeb)).Find("", , , xlWhole) If v Is Nothing Then Exit Sub lideb = v.Row ' effacer la fin de la feuille depuis (lideb,codeb) Range(.Cells(lideb, codeb), .Cells(Rows.Count, Columns.Count)).ClearContents End With End Sub
bonne journée
gbinforme
23 févr. 2013 à 09:35
- Messages postés
- 14935
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
23 févr. 2013 à 09:35
Bonjour ccm81,
C'est bien de varier les options pour débuter et je confirme que les 3 macros, quelles que soient les fonctions utilisées, fonctionnent parfaitement sous 2007 et 2010.
Personnellement, je choisirais la première en incorporant la constante comme l'a fait vbadebutant.
C'est bien de varier les options pour débuter et je confirme que les 3 macros, quelles que soient les fonctions utilisées, fonctionnent parfaitement sous 2007 et 2010.
Personnellement, je choisirais la première en incorporant la constante comme l'a fait vbadebutant.
ccm81
23 févr. 2013 à 12:23
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
23 févr. 2013 à 12:23
Bonjour gbinforme
Tu me rassures, En fait, j'ai cherché une autre solution, vu que (post#2) vbadebutant a apparemment eu un problème avec l'instruction > adr = .UsedRange.Address sous excel 2007 qui semblait ne renvoyer que les colonnes
Et comme il arrive que suivant les versions d'excel .....
bonne journée
Tu me rassures, En fait, j'ai cherché une autre solution, vu que (post#2) vbadebutant a apparemment eu un problème avec l'instruction > adr = .UsedRange.Address sous excel 2007 qui semblait ne renvoyer que les colonnes
Et comme il arrive que suivant les versions d'excel .....
bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
25 févr. 2013 à 17:06
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
25 févr. 2013 à 17:06
de rien, peux tu mettre le problème à résolu (en haut de ton premier message)
bonne fin de journée
ccm81
bonne fin de journée
ccm81
Bonjour, je veux bien mais je ne trouve pas le lien Modifer - Marquer comme résolu nulle part :(
ccm81
25 févr. 2013 à 18:49
- Messages postés
- 10357
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 5 juillet 2022
25 févr. 2013 à 18:49
en haut du tout premier message!