Remplir colonne automatiquement avec une formule

Bonjour la communauté,

Savez-vous s'il existe une macro simple pour étendre une formule dans une colonne en fonction du nombre de ligne non vide de l'autre colonne sur une plage qui varie d'un jour à l'autre?

J'ai passé par mal de temps dessus aujourd'hui et suis parvenu à obtenir un résultat mais bon... Ca prend pas mal de temps ne serait-ce que sur 10 lignes alors je ne vous raconte pas sur 10000!!

J'ai mis un exemple dans le doc en PJ.

Je cherche simplement à informer la date du jour en colonne B lorsque je lance la macro quand il y a un code en colonne C, et à tirer la formule concaténer de la colonne A sur le nombre de ligne correspond à la date et au code.

Pour une personne aguerrie en VBA cela doit être simple mais pour Bibi c'est bien compliqué!!

Je vous remercie par avance pour l'aide que vous pourrez m'apporter.

Tagada

Bonsoir,

Ma réponse a du mal à passer... Devant la réécrire, je vais être plus court que la première fois !

Comme tu as pu voir, une date c'est un nombre ! ce qui pose la question de ce que tu veux concaténer.

D'autre part, une formule est utile si le résultat qu'elle renvoie est destiné à varier, si ce n'est pas le cas, autant avoir le résultat définitif, surtout si on opère en VBA.

Je ne vois pas bien ce que tu veux faire au bout du compte !

Si tu as une valeur à mettre dans une série de cellule, tu écris :

ActiveSheet.Range("A1:A10000") = valeur

par exemple, et la même valeur sera dans tes 10000 cellules.

Tu as des résultats à mettre dans une colonne, tu les calcules en VBA et tu les mets... de préférence en utilisant un tableau, c'est plus rapide...

La seule question, c'est qu'on comprenne ce que tu veux faire : on doit avoir une situation de départ bien définie, des données à utiliser pour obtenir une situation résultante bien définie aussi, et on écrit le code pour passer de l'une à l'autre !

Cordialement.

Bonjour MFerrand,

Merci déjà de prendre sur ton temps pour tenter de m'aider, ce qui, à la vue de mes explications, n'est pas toujours facile je te l'accorde.

En fait la situation est la suivante, chaque jour j'ai une liste de code produit qui vient s'additionner à une liste préalable existante.

Le nombre de codes diffère d'un jour à l'autre bien entendu. Je souhaite simplement informer automatiquement, lorsque j'additionne mes codes à la suite des autres dans la liste existante (au travers d'une macro déjà en place), informer la date de l'incrémentation et créer un nouveau code pour avoir une nouvelle clef primaire (date et code produit). Manuellement ça ne prend pas beaucoup de temps mais c'est répétitif.

Du coup il y aurait deux variable :

Une pour connaitre la position de la dernière ligne de mes codes produits

Une seconde pour identifier la position de la dernière ligne de ma date.

J'aimerais bien passer au travers d'un autofill mais mon code ne fonctionne pas :

Sub test_date()

'

' test_date Macro

Dim X As Long

Dim Y As Long

X = Range("C1").End(xlDown).Address

Y = Range("B1").End(xlDown).Address

Range(Y).Select

Selection.Offset(1, 0).Activate

ActiveCell.Value = "=TODAY()"

Selection.AutoFill Destination:=Range("X:Y")

End Sub

J'espère avoir été un peu plus clair dans l'exposition du sujet et m'excuse de n'avoir pas été clair dès le début.

Bonne soirée,

Tagada

Je ne vois pas de procédure d'insertion de tes codes dans ton fichier, il n'y qu'une procédure concernant des dates plutôt incohérente...

Et là tu proposes une procédure qui n'est pas meilleure, c'est le moins que je puisse dire !

Je ne vois pas bien à quoi me raccorder pour bâtir un code qui tienne la route... on est un peu sur des sables mouvants.

On va donc supposer que conformément à ton fichier, tu as mis les codes en colonne C et qu'il faut servir les colonnes B et A.

Pour la date, qu'au jour le jour tu prends la date de la veille...

Et voilà un code qui fait effectivement ça :

Sub DateClé()
    Dim dc(), d, ld&, lf&, n%, i%
    With Feuil1
        ld = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        lf = .Cells(.Rows.Count, 3).End(xlUp).Row
        n = lf - ld + 1: d = Date - 1
        ReDim dc(ld To lf, 1 To 1)
        For i = ld To lf
            dc(i, 1) = CLng(d) & " " & .Cells(i, 3)
        Next i
        Application.ScreenUpdating = False
        .Cells(ld, 2).Resize(n).Value = d
        .Cells(ld, 1).Resize(n).Value = dc
        Application.ScreenUpdating = True
    End With
End Sub

...sans déperdition inutile, sans formule inutile...

Bonjour MFerrand,

La macro proposée fonctionne à merveille! Merci beaucoup!

Je dois cependant avouer ne pas comprendre (encore) grand chose au code mais j'y travaille et espère pouvoir aider les débutants de la même façon que vous m'aidez aujourd'hui.

Encore un grand merci!

Tagada

Rechercher des sujets similaires à "remplir colonne automatiquement formule"