XL pour MAC comptage de lignes et colonnes

Delorme

XLDnaute Occasionnel
Bonjour à tous

je fais une macro vba dans laquelle je veux tester mes numéros de dernieres lignes et colonnes par msgbox

je vous joins le fichier et macro
Sub boucles()

Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer

der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
der_colonne = Cells.SpecialCells(xlCellTypeLastCell).Column

MsgBox der_ligne & " " & der_colonne
For ligne = 1 To der_ligne
For colonne = 1 To der_colonne
If (Cells(ligne, colonne).Value <> " ") Then
MsgBox ligne & " " & colonne
Exit Sub

End If
Next colonne

Next ligne

End Sub



j'obtiens 12 et 7 alors que mon fichier est de 21 et 10

ou est l'erreur?
merci
michel
 

Pièces jointes

  • boucleverte.xlsm
    20.1 KB · Affichages: 3

Deadpool_CC

XLDnaute Accro
Bonjour,

Commence par forcer Excel a redéfinir la plage des cellules utilisées avec un ActiveSheet.UsedRange

j'ai pas Excel sur ce poste (le mien est en cours de reformatage (lol) mais la fonction UsedRange te renvoie un Range ... avec les propriétés .rows.count et .columns.count tu devrait avoir ton info.

A+
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Delorme,
Il y a plusieurs erreurs :
1- La macro étant dans Feuil1 elle s'exécute sur Feuil1, et donc le résultat est faux.
2- Avec des For Next comme ça, il commence par cell(1,1) donc il trouvera la première et non la dernière.
3- Une cellule vide c'est "" et non " "
En PJ un essai avec la macro dans un module :
VB:
Sub boucles()
Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    For ligne = der_ligne To 1 Step -1
        For colonne = der_colonne To 1 Step -1
            If .Cells(ligne, colonne) <> "" Then
                MsgBox ligne & " " & colonne
                Exit Sub
            End If
        Next colonne
    Next ligne
End With
End Sub
Ensuite, si der_ligne et der_colonne vous donne les dernières lignes et colonnes utilisées, pourquoi faire ensuite un test ?
Pourquoi ne pas faire simplement ( bouton 2 de la PJ ):
Code:
Sub boucles2()
Dim der_ligne As Integer, der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    MsgBox der_ligne & " " & der_colonne
End With
End Sub

Deux conseils :
1- Pour le code sur un post utilisez les balises ( </> à droite de l'icone GIF ) c'est plus lisible.
2- Pour le code, indentez. C'est plus clair et permet de mieux comprendre la structure, surtout pour quelqu'un qui n'est pas le rédacteur.
 

Pièces jointes

  • boucleverte (V2).xlsm
    18.7 KB · Affichages: 3

Delorme

XLDnaute Occasionnel
Bonjour Delorme,
Il y a plusieurs erreurs :
1- La macro étant dans Feuil1 elle s'exécute sur Feuil1, et donc le résultat est faux.
2- Avec des For Next comme ça, il commence par cell(1,1) donc il trouvera la première et non la dernière.
3- Une cellule vide c'est "" et non " "
En PJ un essai avec la macro dans un module :
VB:
Sub boucles()
Dim ligne As Integer: Dim colonne As Integer
Dim der_ligne As Integer: Dim der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    For ligne = der_ligne To 1 Step -1
        For colonne = der_colonne To 1 Step -1
            If .Cells(ligne, colonne) <> "" Then
                MsgBox ligne & " " & colonne
                Exit Sub
            End If
        Next colonne
    Next ligne
End With
End Sub
Ensuite, si der_ligne et der_colonne vous donne les dernières lignes et colonnes utilisées, pourquoi faire ensuite un test ?
Pourquoi ne pas faire simplement ( bouton 2 de la PJ ):
Code:
Sub boucles2()
Dim der_ligne As Integer, der_colonne As Integer
With Sheets("Feuil2")
    der_ligne = .Cells.SpecialCells(xlCellTypeLastCell).Row
    der_colonne = .Cells.SpecialCells(xlCellTypeLastCell).Column
    MsgBox der_ligne & " " & der_colonne
End With
End Sub

Deux conseils :
1- Pour le code sur un post utilisez les balises ( </> à droite de l'icone GIF ) c'est plus lisible.
2- Pour le code, indentez. C'est plus clair et permet de mieux comprendre la structure, surtout pour quelqu'un qui n'est pas le rédacteur.
 

Discussions similaires

Statistiques des forums

Discussions
305 056
Messages
2 024 142
Membres
223 553
dernier inscrit
roroyves