Macro Calculer mois selon date

Bonjour la Team,

Quelqu'un aurais une macro pour m'indiquer le mois en colonne B selon une date en colonne A ? Je l'ai fait via une formule mais ce n'est pas propre (problème dans les filtres), car j'ai besoin de l'appliquer à une colonne complète.

Merci de votre aide.

Mehdi

Bonjour

Voila une solution pour récupérer le mois, à adapté

Sub mois()
Dim f As Worksheet
Set f = Feuil2

For i = 1 To f.Range("A65000").End(xlUp).Row
f.Cells(i, 2) = Month(f.Cells(i, 1))
Next i

End Sub

Bonjour le fil, bonjour le forum,

Le même principe de GGautier mais beaucoup plus rapide sur un tableau très gros car le recherche ne s'effectue pas directement sur les cellules mais via une variable tableau de type variant. Le code :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TD As Variant 'déclare la variable TD (Tableau des Dates)
Dim TM() As Variant 'déclare la variable TM (Tableau des Mois)
Dim D As Date 'déclare la variable D (Date)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
TD = Range("A1:A" & DL) 'définit le tableau des dates TD
ReDim TM(1 To DL) 'redimenionne le tableau des mois
For I = 1 To UBound(TD, 1) 'boucle sur toutes les dates de la colonne A
    If IsDate(TD(I, 1)) = True Then 'condition : si la données ligne I colonne 1 du tableau des dates TD est une date
        D = DateSerial(Year(TD(I, 1)), Month(TD(I, 1)), Day((TD(I, 1)))) 'définit la date D
        TM(I) = CStr(Format(D, "mmmm")) 'renvoie le mois dans le tableau TM
    Else 'sinon (si la données ligne I colonne 1 du tableau des dates TD n'est pas une date)
        TM(I) = "" 'renvoie du vide dans le tableau TM
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("B1").Resize(DL, 1).Value = Application.Transpose(TM) 'renvoie dans la cellule B1 redimensionnée le tableau des mois TM transposé
End Sub

Salut GGautier,

Peux tu m'expliquer cette ligne :

f.Cells(i, 2) = Month(f.Cells(i, 1))

Car ma macro bloque ici.

Merci TauThème, je regarde aussi cette solution.

Merci pour votre aide,

Pour l'exemple :

Dans la cellule A1 (ou cells(1,1)) tu as une date, du coup tu met le numéro du mois dans la cellule a droite de la même cellule, soit B1 (ou cells(1,2))

A savoir que la syntaxe est cells(numéro de ligne , numéro de colonne)

C'est normal que mon code ne fonctionne pas si dans la cellule A1 ce n'est pas une date de saisie !

Voilà la même chose avec un contrôle de la présence d'une date dans la colonne A

Sub mois()
Dim f As Worksheet
Set f = Feuil3

For i = 1 To f.Range("A65000").End(xlUp).Row 'Pour les cellules allant de ligne 1 à la dernière cellule utilisée de la colonne A
If Not IsDate(f.Cells(i, 1)) Then 'Si dans la cellule de la colonne A ce n'est pas une date alors :
    Cells(i, 2) = "" 'La cellule de la même ligne de la colonne B reste vide
Else 'Sinon :
    f.Cells(i, 2) = Month(f.Cells(i, 1)) 'La cellule de la même ligne de la B prend pour valeur le numéro de mois correspondant
End If 'Fin du si

Next i 'Passage à la cellule suivante

End Sub

Merci pour les explications, je check ça de suite.

Mehdi

Bonjour,

Une autre proposition à étudier.

Cdlt.

34medawe.xlsm (22.76 Ko)
Public Sub DisplayMonths()
Dim tbl As Variant, arr() As Variant
Dim dt As Date
Dim lastRow As Long, I As Long
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        tbl = .Cells(2, 1).Resize(lastRow - 1).Value
        ReDim arr(1 To UBound(tbl))
        For I = 1 To UBound(tbl)
            If IsDate(tbl(I, 1)) Then
                dt = CDate(tbl(I, 1))
                arr(I) = Format(dt, "mmmm") 'nom mois
                'arr(I) = VBA.Month(dt)      'num?ro mois
            End If
        Next I
        With .Cells(2, 2).Resize(lastRow - 1)
            .ClearContents
            .Value = Application.Transpose(arr)
        End With
    End With
End Sub

J'ai utilisé la première macro.

Merci à vous tous

Rechercher des sujets similaires à "macro calculer mois date"