Détecter la dernière ligne remplie

Très heureux d'avoir pu te dépanner.

Bonnes fêtes de fin d'année,

Pareil encore merci, je te dois beaucoup

Bonjour,

Je suppose que ma question à sa place à la suite de ce topic même s'il date un peu.

Mon but est de traduire les nomenclatures à partir d'un export (ici on prendra feuille "Trad").

Ci-joint le type de fichier que j'ai à traiter.

J'ai la formule pour traduire en E11 et j'aimerais la dérouler automatiquement jusqu'en bas.

Le double clique ne marche pas toujours car j'ai des lignes vides. Et je ne peux pas les supprimer car la mise en forme doit rester telle quelle. De plus il faut savoir que la taille des nomenclatures varient beaucoup (d'une ligne à 1000 voire plus) et que je ne veux pas m'amuser à tirer ma formule à chaque fois.

Il faudrait pour cela que je détecte ma dernière ligne or je suis nul en VBA donc je ne comprends pas les formules que vous avez présentées précédemment .

Les "xxx" représentent les valeurs à ne pas traduire.

Est-il possible de la détecter par formule comme l'a proposé Dan ?

Cdlt

21traduction.zip (8.04 Ko)

Bonjour,

Pour avoir le focus dans la cellule libre après la dernière occupée, je te propose cette macro :

Sub FinD()

'

' Fin Macro

'

Range("A65536").End(xlUp).Offset(1, 0).Select

'

End Sub

Si tu n'es pas familier des macros, je te mets la démarche à suivre sous Excel 2010... si tu n'es pas débutant passe donc ces quelques lignes !

1-ouvre excel (ça paraît évident !),

2-ouvre ton fichier

3-onglet développeur / Enregistrer une macro

4-dans la fenêtre donner un nom à cette macro (=FinD dans le texte ci-dessus), complète éventuellement la description, puis Ok

5-onglet développeur / macro

6-dans la fenêtre qui s'ouvre sélectionne le nom de la macro (FinD), puis à droite : Modifier

7-dans la fenêtre qui s'ouvre, par un copier-coller, remplace Sub FinD()... ...End Sub par le texte que j'ai placé dans ce post.

8-dans mon exemple : Range("A... place le curseur dans la colonne A ; Offset(1,0) place le curseur dans la colonne A et dans la cellule vide la plus lointaine.

Il ne te reste plus qu'à fermer la fenêtre VBA.

En ce qui me concerne, dans la feuille qui m'intéresse, je place une forme à qui j'attribue la macro, ainsi, en un clic, je me retrouve au bon endroit instantanément !

Est-ce bien cela que tu voulais ?

Ca répond en parti à mon problème, merci.

Il faudrait maintenant que je copie la formule de la colonne E tant que je ne suis pas arrivé à la cellule sélectionnée par la Sub FinD.

Algorithmiquement ça donnerait :

TANT QUE Activecell - 1 colonne =! Cellule FinD (ActiveCell est une case de la colonne E)

Aller à Ativecell + 1 ligne

Ecrire la formule de traduction (OU copier formule de AtiveCell)

AtiveCell <- AtiveCell + 1 ligne

FIN TANT QUE

Je sais pas si c'est bien clair mais voilà ce qu'il me faudrait.

Les 2 problèmes majeurs que j'ai sont l'incrémentation et le test.

14traduction.zip (9.66 Ko)

C'est bon j'ai réussi à faire ce que je voulais à force de tâtonnement. Si ça intéresse quelqu'un, voilà le code :

Sub CopierJusquaFinD()

RowEnd = RowEndColumn + 1

Range("E4").Select

While ActiveCell.Row <> RowEnd
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(R[-1]C[-1]),"""",VLOOKUP(RC[-2],Trad!R1C1:R4C2,2,FALSE))"
    Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
Wend

End Sub

avec comme sous-macros :

Sub EndColumn()

Range("D65536").End(xlUp).Offset(1, 0).Select

End Sub

Function RowEndColumn()

EndColumn
RowEndColumn = ActiveCell.Row

End Function

Merci encore Cebe

Bonjour,

Très heureux que tu aies pu trouver LA bonne solution ! T'es vraiement fortiche !

@+;

Rechercher des sujets similaires à "detecter derniere ligne remplie"