Pb avec Columns.count (et Workbooks.Add ?)

GiHesse

XLDnaute Nouveau
Bonjour,

le problème qui suit n'est ni urgent, ni absolument nécessaire à résoudre. C'est juste pour essayer de comprendre Excel. :)

j'ai travaillé cet été durant un stage notamment sur des macros Excel pour réorganiser des données.
Or la cible de la chose était d'utiliser Excel 2007, afin de ne plus être soumis à la limite des 65 536 lignes. Mais les délais de commande et d'installation ont fait que je n'ai jamais pu voir le bout du nez de cette version.

Donc j'ai tout codé sur Excel 2000.
Aujourd'hui, j'ai amené pour mon dernier jour mon ordi perso afin de tester ce que cela donnait sur Excel 2007.

J'ai juste eu une erreur au moment de l'exécution de la macro suivante, qui récupère la première colonne non vide d'une ligne donnée.

Function RecupererColonneMax2(NomClasseur As String, NomFeuille As String, NumeroLigne As Long) As Long
'Test OK

'Attention, c'est la colonne pour la ligne renseignée
'Renvoie le Long de la dernière colonne, et 0 si le tableau est vide
Dim CelluleEnHautADroite As Range
Dim Sh2 As Worksheet
Set Sh2 = Workbooks(NomClasseur).Worksheets(NomFeuille)

'On définit la cellule en haut à droite
Set CelluleEnHautADroite = Sh2.Cells(NumeroLigne, Columns.Count)
If IsEmpty(CelluleEnHautADroite.Value) Then
Set CelluleEnHautADroite = CelluleEnHautADroite.End(xlToLeft)
End If

Dim colonne As Long
colonne = CelluleEnHautADroite.Column

If (IsEmpty(CelluleEnHautADroite.Value)) Then
colonne = 0
End If

RecupererColonneMax2 = colonne
End Function

L'erreur situait le problème au niveau de la ligne
Set CelluleEnHautADroite = Sh2.Cells(NumeroLigne, Columns.Count)

Comme je passe d'un Excel à un autre, j'imagine que le problème c'est le passage d'un Columns.Count de 256 à 16384.

Mais ce qui est bizarre, c'est que la méthode ne plante que sur un classeur créé durant l'exécution de la macro, alors qu'elle ne pose pas de problème sur le classeur qui porte la macro. (cette méthode étant un petit outil que j'utilise à plusieurs reprise).

Donc je me demandais si lorsque la macro fait un Workbooks.Add elle n'ajouterait pas un classeur en format .xls et non pas .xlsm ? Du coûts, pour le classeur la limite serait de 256 colonnes mais puisqu'on travaille dans Excel 07, la limite est de 16384? (pure supposition)

Je pars donc en remplaçant le Columns.Count par 256, mais je ne trouve pas ça très élégant (bien que cela marche). En effet, qui me dit que si je fais un Rows.Count, cela ne va pas aussi poser problème (pour l'instant je l'ai fais et je n'en ai pas)

Longue vie à ce forum, qui m'a aidé de nombreuses fois dans mon apprentissage en autodidacte du VBA cet été.;)

GiHesse
 

job75

XLDnaute Barbatruc
Re : Pb avec Columns.count (et Workbooks.Add ?)

Bonjour GiHesse,

Votre diagnostic (classeur .xls) paraît très juste (pas d'autres raisons possibles), alors écrivez :

Code:
Set CelluleEnHautADroite = Sh2.Cells(NumeroLigne, [COLOR="Red"]Sh2[/COLOR].Columns.Count)

Sans le Sh2 c'est en effet le nombre de colonnes de la feuille active qui est utilisé.

A+
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
189

Statistiques des forums

Discussions
312 215
Messages
2 086 339
Membres
103 192
dernier inscrit
Corpdacier