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