Signaler

Range Cells OK sur une colonne mais pas sur une ligne [Résolu]

Posez votre question Arckaïn - Dernière réponse le 14 avril 2017 à 15:54 par Arckaïn
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 !!

Utile
+0
plus moins
Résolu !

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

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !