Fonction MOIS en VBA

Bonjour,

J'ai quelques difficultés à finaliser mon code VBA (je suis débutante débutante !).

Mon Code:

Sub AjoutColonne()

Dim lastLigne As Integer

Columns("P:P").Insert Shift:=xlToRight 'décaler les colonnes d'import erp

Columns("U:U").Insert Shift:=xlToRight 'décaler les colonnes d'import erp

Range("P1").Value = "Ecart"

Range("U1").Value = "Montant HT"

Range("AB1").Value = "Mois"

Range("AC1").Value = "Année"

lastLigne = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To lastLigne 'de la 2eme ligne jusqu'au deniere (vu que le 1er ligne c'est le nom de la colonne : Montant HT )

If Range("P" & i).Value = "" Then

Range("P" & i).Value = Range("O" & i) - Range("N" & i) 'on soustraie le délai filiale au délai client

End If

If Range("U" & i).Value = "" Then 'si la case est vide

Range("U" & i).Value = Range("S" & i) * Range("T" & i) 'on additionne montant unitaire et le prix

End If

If Range("AB" & i).Value = "" Then

Range("AB" & i).Value = WorksheetFunction.Month(Range("O" & i)) 'on utilise la formule MOIS=

End If

If Range("AC" & i).Value = "" Then

Range("AC" & i).Value = WorksheetFunction.Year(Range("O" & i)) 'on utilise la formule ANNEE=

End If

Next i

End Sub

Au niveau des deux derniers "If", je souhaiterais utiliser les mêmes fonctions que sous Excel "MOIS=" et "ANNEE=" en faisant référence à des cellules en colonne "O". Sauf que bien évidemment ma formule ne fonctionne pas... Est-ce que le Month et le Year ne peuvent être utilisés ?

Merci d'avance

Bonjour,

je doute que c'est une addition ici :

 Range("U" & i).Value = Range("S" & i) * Range("T" & i) 'on additionne montant unitaire et le prix
End If 

pour votre problème ,

 If Range("AB" & i).Value = "" Then
Range("AB" & i).Value = WorksheetFunction.Month(Range("O" & i)) 'on utilise la formule MOIS=
End If
If Range("AC" & i).Value = "" Then
Range("AC" & i).Value = WorksheetFunction.Year(Range("O" & i)) 'on utilise la formule ANNEE=
End If  

"Month" et "year" sont tous les 2 des fonction intégré au vba donc nul besoin de "WorksheetFunction." de plus les 2 fonction demande en paramètre une variable de type "date" et retour un "integer" or vous avez mis une variable type "range "

https://msdn.microsoft.com/fr-fr/library/s70thwaz(v=vs.90).aspx

https://msdn.microsoft.com/fr-fr/library/88k2aec8(v=vs.90).aspx

Effectivement je me suis trompé dans le commentaire, "une multiplication", merci .

Pour votre réponse à mon problème:

J'ai réussi en enlevant "WorksheetFunction." comme vous me l'aviez dit!!!!

Par contre je n'ai pas enlevé le "Range" et cela fonctionne quand même.

Merci beaucoup.

Voici mon code maintenant :

If Range("AB" & i).Value = "" Then

Range("AB" & i).Value = Month(Range("O" & i)) 'on utilise la formule MOIS=

End If

If Range("AC" & i).Value = "" Then

Range("AC" & i).Value = Year(Range("O" & i)) 'on utilise la formule ANNEE=

End If

teste avec : = year(Cdate(Range("O" & i).value)) 'si c'est une date dans la case "O" & i


ou juste ".value" si le format de la case est déjà une date

Rechercher des sujets similaires à "fonction mois vba"