Bonjour à tous,
Je souhaite automatisé la mise à jour d'un planning avec une macro.
Lorsque le travail est réalisé, on entre manuellement la date de réalisation dans une cellule et on lance la macro qui doit:
- Si la périodicité est de 6 mois créer une nouvelle ligne avec la nouvelle date.
J'ai aménagé un code trouvé et j'arrive à insérer la ligne et a recopié les valeurs que je veux dans cette nouvelle ligne.
Mais j'ai 2 problèmes:
- La formule EDATE ne récupère pas les valeurs mais le nom de mes variables.
- A la prochaine mise à jour, je recréais une autre ligne ( en fin d'années je ne doit avoir que 2 lignes pour le même instruments). J'aimerais donc ajouter une condition à la création de la ligne ( S'il existe 2 fois le même numéro d'instrument ne pas insérer une nouvelle ligne)
Voici mon code:
Sub Bouton1_Cliquer()
Dim LigneTotal As Long
Dim LigneAnalysé As Long
Dim NouvelleDate As String
Dim NouveauMois As String
LigneTotal = [F65536].End(xlUp).Row
For LigneAnalysé = LigneTotal To 2 Step -1
If Cells(LigneAnalysé, 13).Value <> "" And Cells(LigneAnalysé, 10).Value = "6" And Cells(LigneAnalysé - 1, 5).Value <> Cells(LigneAnalysé, 5).Value Then
Rows(LigneAnalysé + 1).Insert
Cells(LigneAnalysé + 1, 1).Value = Cells(LigneAnalysé, 1).Value
Cells(LigneAnalysé + 1, 2).Value = Cells(LigneAnalysé, 2).Value
Cells(LigneAnalysé + 1, 3).Value = Cells(LigneAnalysé, 3).Value
Cells(LigneAnalysé + 1, 4).Value = Cells(LigneAnalysé, 4).Value
Cells(LigneAnalysé + 1, 5).Value = Cells(LigneAnalysé, 5).Value
Cells(LigneAnalysé + 1, 6).Value = Cells(LigneAnalysé, 6).Value
Cells(LigneAnalysé + 1, 7).Value = Cells(LigneAnalysé, 7).Value
Cells(LigneAnalysé + 1, 8).Value = Cells(LigneAnalysé, 8).Value
Cells(LigneAnalysé + 1, 9).Value = Cells(LigneAnalysé, 9).Value
Cells(LigneAnalysé + 1, 10).Value = Cells(LigneAnalysé, 10).Value
Cells(LigneAnalysé + 1, 11).Value = Cells(LigneAnalysé, 13).Value
NouvelleDate = Cells(LigneAnalysé + 1, 11).Value
NouveauMois = Cells(LigneAnalysé + 1, 10).Value
Cells(LigneAnalysé + 1, 12).Formula = "=EDATE(NouvelleDate,NouveauMois)"
End If
Next LigneAnalysé
End Sub
Merci de votre aide.
Je souhaite automatisé la mise à jour d'un planning avec une macro.
Lorsque le travail est réalisé, on entre manuellement la date de réalisation dans une cellule et on lance la macro qui doit:
- Si la périodicité est de 6 mois créer une nouvelle ligne avec la nouvelle date.
J'ai aménagé un code trouvé et j'arrive à insérer la ligne et a recopié les valeurs que je veux dans cette nouvelle ligne.
Mais j'ai 2 problèmes:
- La formule EDATE ne récupère pas les valeurs mais le nom de mes variables.
- A la prochaine mise à jour, je recréais une autre ligne ( en fin d'années je ne doit avoir que 2 lignes pour le même instruments). J'aimerais donc ajouter une condition à la création de la ligne ( S'il existe 2 fois le même numéro d'instrument ne pas insérer une nouvelle ligne)
Voici mon code:
Sub Bouton1_Cliquer()
Dim LigneTotal As Long
Dim LigneAnalysé As Long
Dim NouvelleDate As String
Dim NouveauMois As String
LigneTotal = [F65536].End(xlUp).Row
For LigneAnalysé = LigneTotal To 2 Step -1
If Cells(LigneAnalysé, 13).Value <> "" And Cells(LigneAnalysé, 10).Value = "6" And Cells(LigneAnalysé - 1, 5).Value <> Cells(LigneAnalysé, 5).Value Then
Rows(LigneAnalysé + 1).Insert
Cells(LigneAnalysé + 1, 1).Value = Cells(LigneAnalysé, 1).Value
Cells(LigneAnalysé + 1, 2).Value = Cells(LigneAnalysé, 2).Value
Cells(LigneAnalysé + 1, 3).Value = Cells(LigneAnalysé, 3).Value
Cells(LigneAnalysé + 1, 4).Value = Cells(LigneAnalysé, 4).Value
Cells(LigneAnalysé + 1, 5).Value = Cells(LigneAnalysé, 5).Value
Cells(LigneAnalysé + 1, 6).Value = Cells(LigneAnalysé, 6).Value
Cells(LigneAnalysé + 1, 7).Value = Cells(LigneAnalysé, 7).Value
Cells(LigneAnalysé + 1, 8).Value = Cells(LigneAnalysé, 8).Value
Cells(LigneAnalysé + 1, 9).Value = Cells(LigneAnalysé, 9).Value
Cells(LigneAnalysé + 1, 10).Value = Cells(LigneAnalysé, 10).Value
Cells(LigneAnalysé + 1, 11).Value = Cells(LigneAnalysé, 13).Value
NouvelleDate = Cells(LigneAnalysé + 1, 11).Value
NouveauMois = Cells(LigneAnalysé + 1, 10).Value
Cells(LigneAnalysé + 1, 12).Formula = "=EDATE(NouvelleDate,NouveauMois)"
End If
Next LigneAnalysé
End Sub
Merci de votre aide.