VBA excel extraire le mois et l'année d'une date au format standard

Aimedija

XLDnaute Nouveau
Bonjour,

Ayant un niveau moyen en VBA et n'ayant pas trouver de réponse satisfaisante sur ce site , je me permet de poser cette question : comment extraire le mois et l'année d'une date au format standard (par défaut) ;

J'ai ici un code qui me permet de copier la date pour des cellules vides d'une colonne à une autre dans un même workbook que je désire modifier.

La date d'origine est 20180625 et je souhaiterais obtenir un résultat 06/2018 (mois/année)

Code:
Private Sub FillInEmpty()

Dim lastRow As Long

Dim I As Long

Dim ws As Worksheet

Dim Rep As Integer

Set ws = Sheets("Page1_1")


  Rep = MsgBox("Are you willing to copy all dates into this column?", vbYesNo + vbQuestion, "mDF XLpages.com")
  If Rep = vbYes Then

With ws
lastRow = Cells(rows.count, 35).End(xlUp).Row


For I = lastRow To 2 Step -1

  If Cells(I, 35).Value = "" Then

  Cells(I, 35).Value = Cells(I, 29).Value

  End If

Next I
End With

Else

End If

Set ws = Nothing

End Sub

j'ai essayé d'introduire la notion de : LaDate = format(now, "mm-aaaa") mais j'ai des difficulté à adapter mon code d'origine.

Est ce que quelqu'un aurais une idée? merci d'avance
 

Pièces jointes

  • Exemple date.xlsm
    54.7 KB · Affichages: 60
Dernière édition:

Aimedija

XLDnaute Nouveau
Merci Jean-Marie,

Le format de conversion me convient parfaitement. Dsl la colonne 2 ne devait pas être vide pour l'exemple ci-joint.

Néanmoins, étant donner que dans mon fichier la colonne source est en AC (29) et la colonne de destination en AI (35) , en adaptant ton code je recois un message d'erreur de type 13 : incompatibilité de type au niveau de Year_Date. Serais - tu comment puis je adapter le Year_Date en fonction de mes colonnes?

Merci
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,

Ayant un niveau moyen en VBA et n'ayant pas trouver de réponse satisfaisante sur ce site , je me permet de poser cette question : comment extraire le mois et l'année d'une date au format standard (par défaut) ;

J'ai ici un code qui me permet de copier la date pour des cellules vides d'une colonne à une autre dans un même workbook que je désire modifier.

La date d'origine est 20180625 et je souhaiterais obtenir un résultat 06/2018 (mois/année)
en fonction de l'exemple fourni (#1) .:
VB:
Sub Macro1()
  Range("F2").Select
  ActiveCell.FormulaR1C1 = _
  "=TEXT(1*TEXT(Tableau1[[#This Row],[DocumentDate]],""0000\/00\/00""),""mm-aaaa"")"
End Sub
upload_2018-7-6_18-33-11.png
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Je ne comprends pas, que vient faire le VBA ici ?

Pour convertir la colonne AC en (vraies) dates il suffit d'entrer en AI2 la formule :
Code:
=--(STXT(AC2;5;2)&"/"&GAUCHE(AC2;4))
Comme il s'agit d'un tableau Excel la formule se recopie automatiquement sur toute la colonne.

Bien sûr mettre la colonne AI au format personnalisé mm/aaaa.

Fichier .xlsx joint.

A+
 

Pièces jointes

  • Exemple date 2(1).xlsx
    209.2 KB · Affichages: 24

Aimedija

XLDnaute Nouveau
Bonjour,

Merci pour vos nombreux retour.

Modeste Geedee,
Job 75,
Vos codes fonctionnent bien mais ils ne prennent pas en compte les cellules non vides. ces derniers écrasent les données présentes.

Chti160,
le code fournie fonctionnent bien mais ne tiens pas en compte le format de date voulu.

Idéalement si quelqu'un peux m'aider à adapter le code ci-dessous cela serais d'une grande aide.

Code:
Sub Macro1()

Dim ws As Worksheet
Dim lastRow As Long
Dim I As Long
Dim Rep As Integer

Set ws = Sheets("Page1_1")
  
 Rep = MsgBox("Are you willing to copy all dates into this column?", vbYesNo + vbQuestion, "mDF XLpages.com")
  If Rep = vbYes Then
  
ws.Select

lastRow = Cells(rows.count, 35).End(xlUp).Row

For I = lastRow To 2 Step -1

If Cells(I, 35).Value = "" Then

Cells(I, 35).Value = Cells(I, 29).FormulaR1C1 = _
  "=TEXT(1*TEXT(Tableau1[[#This Row],[DocumentDate]],""0000\/00\/00""),""mm-aaaa"")"

Else
End If
Next I
End If
End Sub

Merci d'avance,
 

ChTi160

XLDnaute Barbatruc
Bonjour Aimedija
Bonjour le Fil, le Forum
Ah oui ! Excuse !(voir post#4) Lol
Pour ce qui est du Format ,il suffit dans cette Ligne de Code .
VB:
Tab_Temp(I, 1) = Application.Proper(Format(DateSerial(Year_Date, Month_Date, 1), "mmmm-yyyy"))
de mettre : "mm-yyyy" au Lieu de "mmmm-yyyy" !
ensuite adapter la Colonne Cible .
Bonne journee
Jean marie
 
Dernière édition:

Aimedija

XLDnaute Nouveau
Jean-Marie,

Un grand merci, néanmoins lorsque j'essaye d'adapter ton code ; remplacer les colonnes 1 & 6 par 29 & 35 ( c'est à dire au lieu de la colonne A et F, j'essaye de sélectionner les colonnes AC et AI) j'obtiens un résultat complétement décaler.

Si tu as le temps , pourrais je te demander de jeter un œil sur le fichier joint? Merci d'avance
 

Pièces jointes

  • Exemple date 2.xlsm
    229.5 KB · Affichages: 31

Statistiques des forums

Discussions
312 148
Messages
2 085 770
Membres
102 969
dernier inscrit
pizza