Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 18h19   #1
Membre du Club
 
Inscription : novembre 2010
Messages : 141
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 141
Points : 61
Points : 61
Par défaut boucle "jusqu'à la dernière ligne"

Bonsoir,

J'ai un petit souci avec une longueur de row / nombre max de lignes

Je fais une boucle qui passe d'une ligne à la suivante ainsi :

Code :
For i = 1 To une certaine valeur max
Mais Excel (version 2007) ne m'autorise qu'une toute petite valeur max pour ma variable i .

Çà marche avec disons 5000, mais 65535 que j'ai vu à plusieurs reprises sur internet ne fonctionne pas.

Une boîte de dialogue (je la déteste!) me dit :
Citation:
Erreur d'exécution '6':

Dépassement de capacité

Et en regardant sur http://office.microsoft.com/en-us/ex...010073849.aspx, il est indiqué :

Citation:
Worksheet size 1,048,576 rows by 16,384 columns
Quelqu'un veut bien démêler tout çà ?
Il y a peut-être un problème dans ma boucle pourtant toute simple ?



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub MaJolieSub()
 
Dim i As Integer, counterRow As Integer
 
counterRow = 1
 
For i = 1 To une certaine valeur max
 
    If Cells(i, 1).Value <> "" Then
        counterRow = counterRow + 1
    Else
        Exit For
    End If
Next i
Merci
__________________
quantcorner.wordpress.com
tallent_e est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 18h23   #2
Membre habitué
 
Homme Ludo
Inscription : février 2010
Messages : 104
Détails du profil
Informations personnelles :
Nom : Homme Ludo
Localisation : France

Informations forums :
Inscription : février 2010
Messages : 104
Points : 135
Points : 135
Bonsoir,

Il s'agit d'un Entier signé ... Vous pouvez aller voir sa valeur Max sur le net.

Utilisez plutôt :

EDIT:

Il y a également plus simple pour votre code

Code :
1
2
3
4
5
6
7
8
Dim i As Long
 
i = 1
 
'On boucle tant que la cellule A & i n'est pas vide
While (Range("A"&i).value <> "")
      i = i + 1
Wend
Le total des lignes non vide est alors la valeur (i - 1)
__________________
Cordialement
LouiMz est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 15/12/2011, 18h36   #3
Membre du Club
 
Inscription : novembre 2010
Messages : 141
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 141
Points : 61
Points : 61
Bonsoir LouiMz.

Merci de votre réponse.

Le type déclaré de ma variable ne convenait semble-t-il pas.

Comme vous le suggérer, cela fonctionne en déclarant mon i comme Long.

Je bricole plutôt avec C++ et C# où j'ai le réflexe boucle => int . Mon biais ...

Merci en tous les cas.

Édouard
__________________
quantcorner.wordpress.com
tallent_e est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h20.


 
 
 
 
Partenaires

Hébergement Web