[déplacé VB.NET -> VBA] Problème code VBA pour macro sous excel 2007
cs_Jay29
Messages postés4Date d'inscriptionmercredi 16 septembre 2009StatutMembreDernière intervention18 septembre 2009
-
16 sept. 2009 à 16:45
cs_Jay29
Messages postés4Date d'inscriptionmercredi 16 septembre 2009StatutMembreDernière intervention18 septembre 2009
-
17 sept. 2009 à 09:31
Bonjour à tous,
Je suis nouveau sur le forum. Étant débutant en VBA, je dois créer une macro sous excel 2007 pour calculer l'ancienneté d'un fichier et l'insérer dans une nouvelle colonne. De plus, je dois demander a l'utilisateur à partir de quelle date il veut la calculer. Mon soucis est que je n'arrive pas a faire incrémenter ma macro. Pour être plus clair, j'ai une colonne qui contient la date de "départ" et l'utilisateur tape la date "d'arrivée". Cependant dans ma formule je fais référence a la cellule qui contient la date de départ mais elle ne s'incrémente pas lorsque je veux que le calcul se fasse par rapport a la date de la cellule suivante. Voici le code que j'ai fait :
[i]
Sub Ancienneté()
Range("AB1").Select
ActiveCell.FormulaR1C1 = "Ancienneté creation"
Range("AB2").Select
Dim firstDate As String
firstDate = InputBox("Entrer une date")
Dim secondDAte As Date
secondDAte = CDate(firstDate)
ancien = DateDiff("m", Range("O2"), secondDAte)
ActiveCell.FormulaR1C1 = ancien
Selection.AutoFill Destination:=ActiveCell.Range("A1:A2050"), Type:= _
xlFillDefault
ActiveCell.Range("A1:A2050").Select
ActiveCell.Offset(2041, 0).Range("A1").Select/i
End Sub
J'espère avoir été assez clair dans ma demande, dans le cas contraire n'hésitez pas a m'en faire part et merci d'avance pour votre aide.
A voir également:
[déplacé VB.NET -> VBA] Problème code VBA pour macro sous excel 2007
cs_Ayr
Messages postés221Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention13 décembre 20092 16 sept. 2009 à 23:31
Bonjour,
Je viens de tester avec :
Sub Ancienneté()
Dim firstDate As Date
Dim Ancien As Date
firstDate = CDate(InputBox("Entrer une date"))
ActiveSheet.Range("B1").Value = DateDiff("m", ActiveSheet.Range("A1").Value, firstDate)
ActiveSheet.Range("B1").NumberFormat = "General"
End Sub
et ça marche bien.
Dans l'exemple je suppose que la date de départ se trouve dans la cellule A1 de la feuille active et j'écris le résultat dans la cellule B2.
Je ne saurais trop te conseiller de nommer explicitement tes différents éléments, par exemple faire référence à la feuille par son nom et de faire un contrôle de la date saisie. Par exemple qu'elle soit superieure à la date de référence.
Par exemple :
Sub Ancienneté()
Dim refDate As Date
Dim firstDate As Date
Dim Ancien As Date
refDate = CDate(Sheets("Feuil3").Range("A1").Value)
On Error Resume Next
Do
firstDate = CDate(InputBox("Entrer une date"))
If firstDate < refDate Then
Call MsgBox("Vous devez saisir une date supèrieure à la date de référence : " & CStr(refDate), vbCritical)
End If
Loop Until firstDate >= refDate
On Error GoTo 0
Sheets("Feuil1").Range("B1").Value = DateDiff("m", Sheets("Feuil1").Range("A1").Value, firstDate)
Sheets("Feuil1").Range("B1").NumberFormat = "General"
End Sub
Ce n'est qu'une suggestion, peut être que des personnes plus experimentées auront de meilleurs solutions.
cs_Jay29
Messages postés4Date d'inscriptionmercredi 16 septembre 2009StatutMembreDernière intervention18 septembre 2009 17 sept. 2009 à 09:31
Effectivement cela fonctionne merci beaucoup pour ton aide, cependant il me reste toujours le problème de l'incrémentation. Je n'arrive pas a faire en sorte qu'il l'exécute pour chaque cellule différente. Dans ton exemple il ne le fait que avec la valeur de la cellule A1 or je voudrais qu'il le fasse automatiquement avec la cellule A2, A3, A4 ect .....
Si vous avez des idées, elles sont les bienvenus!!!
Merci beaucoup!!!