Question simple pour fonction VBA

Bonjour à tous.

J'utilise une macro qui remanie les données d'une feuille (avec des Vlookup, et restructuration des colonnes) et les colle dans une feuille destination. J'ai créé 2 nouvelles colonnes, une "Week number" et l'autre "Year" vides dans cette derniere. Je souhaiterais integrer les fonctions =Week.number() et =Year() dans ces colonnes respectives.

Mon problème c'est que je delete son contenu à chaque fois avant de refaire tourner la macro et ainsi avoir toutes ces données dans la feuille ... Si je n'utilise pas le VBA, les fonctions de ces colonnes seront supprimées à chaque fois que je delete tout le contenu les cette feuille destination ...

Comment integrer ces fonctions dans le VBA ?

les arguments seraient le nom de la colonne pour la destination de chaques formules et une autre colonne "Week Ending date" au format DATE pour le serial number.

Merci !

Bonjour

Merci de mettre un fichier sans données confidentielles. Ce sera plus facile d'apporter une solution correcte

Crdlt

Bonjour Dan,

ok vous avez raison, je vous joins un fichier exemple.

J'aimerais simplement avoir a appuyer sur un bouton et que les colonnes "week number" et "year" se remplissent automatiquement avec les fonctions précisées dans mon premier message, et ce pour le nombre de lignes concernées pas une date

Merci beaucoup de m'aider Dan, n'hésite pas si je ne suis pas assez clair.

Te remercie !

Bonjour,

Une première proposition à tester.

La procédure utilise le numéro de semaine ISO (fonction de feuille de calcul propre à Excel 2013!?).

Cdlt.

Private Sub cmdWeekAndYear_Click()
Dim c As Range, x As Double

    Application.ScreenUpdating = False

    With ActiveSheet
        For Each c In .ListObjects(1).ListColumns(1).DataBodyRange
            x = WorksheetFunction.IsoWeekNum(c.Value2)
            c.Offset(0, 1) = x
            If x = 53 And Month(c.Value2) = 1 Then
                c.Offset(0, 2) = Year(c.Value2) - 1
            Else
                c.Offset(0, 2) = Year(c.Value2)
            End If
        Next
    End With

End Sub

Bonjour Jean-eric, merci pour ta proposition.

Lorsque je la fait tourner sur mon fichier, cela ne marche pas car je ne veux pas faire des listes sur mes colonnes.

Du coup c'est cette ligne de code qui pose problème :

For Each c In .ListObjects(1).ListColumns(1).DataBodyRange

Il faudrait que je puisse cibler ces 2 colonnes par leurs noms et pas avec l'option liste dessus. Tu vois ce que je veux dire ? C'est vrai que c'est plus pratique avec les listes mais ce n'est pas ce que je souhaite

Merci !

Rechercher des sujets similaires à "question simple fonction vba"