Macro supression de ligne et mise à jour de Range("bilan").SpecialCells(xlCellTypeLas

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 !

manuthemalicious

XLDnaute Nouveau
Bonjour,

J'ai un soucis avec une macro que je viens de créer et dont l'objectif est de supprimer des lignes dans un tableau en fonction d'une valeur renseignée sur une feuille de calcul
.
Les 2 dernières lignes comprennent des formules et ne sont donc pas à supprimer:

nb_lignes_a_supprimer = nb_lignes_reel - nb_batiment
MsgBox "il faut supprimer des lignes: " & nb_lignes_a_supprimer

'Détermination de la ligne à supprimer nommée "derniereligne"
derniereligne = (Range("bilan").SpecialCells(xlCellTypeLastCell).Row) - 2
MsgBox "derniere ligne" & derniereligne

For i = 1 To nb_lignes_a_supprimer

Rows(derniereligne).Delete
derniereligne = derniereligne - 1
MsgBox "derniere ligne" & derniereligne
nb_lignes_supprimer = nb_lignes_supprimer + 1

Next i


La macro fonctionne bien au premier lancement mais lorsque je poursuis avec un:

derniereligne = (Range("bilan").SpecialCells(xlCellTypeLastCell).Row)
MsgBox "derniere ligne" & derniereligne


il se trouve que la valeur renvoyée derniereligne est la valeur d'avant execution de la macro!!
cela me pose un problème dans la mesure ou si je fais tourner cette macro 2fois, elle ne fonctionne plus...

Quelqu'un peut-il m'expliquer ce qui se passe?

D'avance merci.

Manu
 
Re : Macro supression de ligne et mise à jour de Range("bilan").SpecialCells(xlCellTy

Bonsoir manuthemalicious,

SpecialCells(xlCellTypeLastCell) donne la Dernière cellule

Pour comprendre ce qui se passe avec cette cellule, faire des manip avec menu Edition-Atteindre-Cellules-Dernière cellule.

Dans le cas de suppression de cellules, lignes ou colonnes, il faut enregistrer le fichier pour mettre à jour la Dernière cellule.

Donc écrire (et exécuter) le code :

ThisWorkbook.Save

A+
 
Re : Macro supression de ligne et mise à jour de Range("bilan").SpecialCells(xlCellTy

bonsoir,
Tu disposes de balises
Code:
 dans le menu (#), ça rend la lecture de ton message plus aisée
[CODE]
'...
derniereligne = Range("bilan").SpecialCells(xlCellTypeLastCell).Row - 2
For i = derniereligne To 1 Step -1
'If ....Then 's'en doute qqchose ici mais quoi ?!!!
Rows(i).Delete
Next i
'...

Edit : Bonsoir Job, pas encore eu l'occasion alors bonne année

A+
kjin
 
Re : Macro supression de ligne et mise à jour de Range("bilan").SpecialCells(xlCellTy

Re,

En fait il est certainement plus simple d'utiliser la méthode Find et d'écrire :

Code:
derniereligne = Range("bilan").Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row - 2

Eventuellement utiliser On Error Resume Next pour éviter un bug si [bilan] est vide.

Edit : salut kjin, merci, une très bonne année pour toi aussi.

A+
 
Dernière édition:
- 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

Retour