Compléter jusqu'à la dernière ligne

Bonjour à tous,

Je cherche à connaître le code VBA qui me permettrait de remplir mes données automatiquement.

Là où je bute, c'est que je dois remplir ma colonne P avec la formule =YEAR. Dans mon fichier en exemple il n'y a que 3 lignes, mais il se pourrait que j'en ai 4000 ou 2500. Nombre de lignes complètement aléatoires donc.

Je connais les formules xldown etc, mais si je l'utilise, il va jusqu'au bout de mon fichier vu que, normal, mes cellules dans la colonne P sont vides.

Il faudrait que cette formule n'aille pas plus loin que la dernière ligne remplie.

Quelqu'un peut-il m'aider ?

Je vous remercie d'avance !

21reporting.xlsx (9.29 Ko)

Hello,

Un truc tout bête mais fait un compteur du nombre de ligne sur une colonne pleine si tu sais que P est vide.

Dim nbLignes As Long

nbLignes = Cells(Rows.Count, "C").End(xlUp).Row

Tu te sers de nb lignes dans une boucle aprés.

Voila si ça peut aider.

Bonne journée.

Code très basique (donc fonctionnel sur toute versions Excel)

Dim i As Integer
i = 2
While Sheet1.Cells(i, 1) <> ""
Sheet1.Cells(i, 28).FormulaLocal = "=ANNEE(Q" & i & ")"
i = i + 1
Wend

Etant très noob sur le vba, je vous joins la macro que j'ai faite jusque là, comment pourrais-je intégrer vos solutions dans mon actuelle macro ?

Mon problème se situe à la ligne intitulée Forum Excel pratique.

Merci pour votre aide les gars

24reporting.xlsm (16.86 Ko)
' Contracts Macro
' Rajout des 3 colonnes contract
 ' Start Year Contract
 ' End Year Contract
 ' Contract duration (différence entre la date du contrat de début et de fin)

    Dim i As Integer
    i = 2
    While Sheet1.Cells(i, 1) <> ""
    Sheet1.Cells(i, 28).FormulaLocal = "=ANNEE(O" & i & ")"
    Sheet1.Cells(i, 29).FormulaLocal = "=ANNEE(Q" & i & ")"
    Sheet1.Cells(i, 30).FormulaLocal = "=AC" & i & "-AD" & i
    i = i + 1
    Wend
hugomagnan a écrit :
' Contracts Macro
' Rajout des 3 colonnes contract
 ' Start Year Contract
 ' End Year Contract
 ' Contract duration (différence entre la date du contrat de début et de fin)

    Dim i As Integer
    i = 2
    While Sheet1.Cells(i, 1) <> ""
    Sheet1.Cells(i, 28).FormulaLocal = "=ANNEE(O" & i & ")"
    Sheet1.Cells(i, 29).FormulaLocal = "=ANNEE(Q" & i & ")"
    Sheet1.Cells(i, 30).FormulaLocal = "=AC" & i & "-AD" & i
    i = i + 1
    Wend

Ca ne fait rien de spécial... Il ne me complète pas la colonne P automatiquement.

Une idée ?

Bonjour,

Remplace la partie dont tu mentionnes par ce code suivant :

derLig = Range("A" & Rows.Count).End(xlUp).Row
With Range(Cells(2, "P"), Cells(derLig, "P"))
    .FormulaR1C1 = "=YEAR(RC[-1])"
    .NumberFormat = "General"
End With
With Range(Cells(2, "R"), Cells(derLig, "R"))
    .FormulaR1C1 = "=YEAR(RC[-1])"
    .NumberFormat = "General"
End With
With Range(Cells(2, "S"), Cells(derLig, "S"))
    .FormulaR1C1 = "=(RC[-2])-(RC[-4])"
    .NumberFormat = "General"
End With
Raja a écrit :

Bonjour,

Remplace la partie dont tu mentionnes par ce code suivant :

derLig = Range("A" & Rows.Count).End(xlUp).Row
With Range(Cells(2, "P"), Cells(derLig, "P"))
    .FormulaR1C1 = "=YEAR(RC[-1])"
    .NumberFormat = "General"
End With
With Range(Cells(2, "R"), Cells(derLig, "R"))
    .FormulaR1C1 = "=YEAR(RC[-1])"
    .NumberFormat = "General"
End With
With Range(Cells(2, "S"), Cells(derLig, "S"))
    .FormulaR1C1 = "=(RC[-2])-(RC[-4])"
    .NumberFormat = "General"
End With

Bonjour Raj,

Merci pour ta réponse !

Cependant il m'indique "erreur de compilation" et me souligne derLig. Ca me parait bon, pourtant...

Re,

Il faut déclarer la variable car tu as l'option explicit qui nécessite la déclaration de variables :

insère la ligne

Dim derLig As Integer

Super !

Merci à tous et Raja de m'avoir trouvé la solution

Rechercher des sujets similaires à "completer derniere ligne"