Déchiffrer cette macro excel + livres VBA

Y1982

XLDnaute Nouveau
Bonjour,
J'ai récupéré une macro (qui est en bas du message) et je voudrais comprendre une ligne avec laquelle j'ai du mal. Cette ligne est :
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
je voudrais comprendre le "+ " et le ".count -1" je sais que je part de la dernière ligne non vide et que je remonte avec un step -1 mais pourquoi le faire compter à ce moment ?
Autre chose : For I = dernLigne To 1 Step -1
à quoi sert le "To 1" c'est pour le faire aller jusqu'à 1 en remontant ? Pourtant je n'ai aucune variable égale à 1.
Dernière chose, je suis un grand amateur débutant et je voudrais apprendre à faire des macros pour Excel. Utilisez les fonctions Excel, des userforms (liste et msgbox), mais je sais à peine déclarer mes variables et je ne connais ps le vocabulaire. Avez-vous un livre à me conseiller, un site pour les nuls ou encore est-ce que l'aide sous Microsoft VB Editor suffit ?
Merci beaucoup.
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 28/11/2009 par ygail
'
Dim myCtrl, dernLigne, I

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Range("A" & I & ":b" & I)) = 0 Then
Rows(I).Hidden = True
Shift:=xlUp
End If
suivant:
Next I
End Sub
Yohann
 

kjin

XLDnaute Barbatruc
Re : Déchiffrer cette macro excel + livres VBA

Bonjour,
Sorti de son contexte, le code n'a pas de sens
Pour ma part, la denière ligne, toutes colonnes confondues serait
Code:
dernLigne = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Comme indiqué, la boucle s'effectue de la ligne "derligne" à 1
Pourquoi chercher ailleurs ce que tu trouveras sur xld ?
A+
kjin
 

JNP

XLDnaute Barbatruc
Re : Déchiffrer cette macro excel + livres VBA

Bonjour le fil :),
Très intéressant ce post, je ne connaissais pas UsedRange et j'ai été voir sur l'aide. C'est vrai que c'est beaucoup plus pratique que End en partant de la dernière ligne ou colonne, surtout quand on passe de 2003 à 2007...
Donc en utilisant UsedRange, la bonne ligne est
Code:
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
Maintenant, quelques commentaires
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
Complètement faux, ActiveSheet.UsedRange.Row renvoie la première ligne utilisée, mais ActiveSheet.UsedRange.Count renvoie le nombre de cellules dans le carré délimité par les cellules extrêmes.
je voudrais comprendre le "+ " et le ".count -1"
La première ligne de la zone est commune, donc quand tu additionnes, il faut ôter 1.
Autre chose : For I = dernLigne To 1 Step -1
à quoi sert le "To 1" c'est pour le faire aller jusqu'à 1 en remontant ? Pourtant je n'ai aucune variable égale à 1.
En général, tu pars de la dernière ligne jusqu'à la première, mais si tu veux arrêter le traitement avant, tu peux par exemple arrêter en ligne 3 et aller de 2 lignes en 2 lignes : For I = 3 to derLigne Step -2
Avez-vous un livre à me conseiller, un site pour les nuls ou encore est-ce que l'aide sous Microsoft VB Editor suffit ?
Comme l'a dit Kjin, tu trouveras déjà pas mal de choses sur XLD.
Certains XLDnautes ont leur propre site avec des tutos, comme celui de JB par exemple.
Enfin, si tu préfères le support papier (ce qui est mon cas), Les Nuls sont pas mal, ainsi que MicroApp.
En ce qui concerne l'aide, elle est indispensable pour des points précis, mais pas vraiment adaptée à l'apprentissage.
Bon courage :cool:
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 796
Membres
101 817
dernier inscrit
carvajal