Range Cells OK sur une colonne mais pas sur une ligne

Résolu/Fermé
Arckaïn - 14 avril 2017 à 15:11
 Arckaïn - 14 avril 2017 à 15:54
Bonjour,

Je souhaite trouver l'indice de la dernière ligne (ok) / colonne (ko) d'un tableau dynamique. Pour se faire j'appelle deux fonctions qui utilisent une troisième volontairement générique :


MsgBox findLastRow2(1, 1, 1, "") 'OK
MsgBox findLastColumn2(1, 1, 10, "") ' KO


Function findLastRow2(counter, start_line, colonne, value_to_stop)
findLastRow2 = findLastAbstract(counter, start_line, colonne, MAXLINE, colonne, value_to_stop) 'line
End Function

Function findLastColumn2(counter, line, start_column, value_to_stop)
findLastColumn2 = findLastAbstract(counter, line, start_column, line, MAXCOLUMN, value_to_stop) 'column
End Function

Function findLastAbstract(counter, start_line, start_column, max_line, max_column, value_to_stop)
'trouve la dernière ligne entre un start et une value dans une colonne (retourne 0 si pas de ligne)
Dim plage As Range, cell As Range
Set plage = Range(Cells(start_line, start_column), Cells(max_line, max_column))
For Each cell In plage
If cell.value = value_to_stop Then
Exit For
Else: counter = counter + 1
End If
Next
If counter > 1 Then
findLastAbstract = counter - 1
Else: findLastAbstract = 0
End If
End Function


Mais cette ligne :
Range(Cells(start_line, start_column), Cells(max_line, max_column)
- plante systématiquement quand je tente de sélectionner une partie de ligne (start_line = max_line) alors que cela fonctionne pour un Range d'une partie de colonne (start_column = max_column)
- Erreur : "Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet

Est-il possible de se passer d'une fonction convertisseur de chiffre en lettre pour se passer de la syntaxe Range("A1:C99") et utiliser Range(Cells(1, 1), Cells(99, 3)) ?
Merci infiniment !!

1 réponse

Résolu !

Il n'y a que 255 colonnes sous excel donc la constante MAXCOLUMN avait une valeur trop grande !
0