Problème macro excel

Victor klajnowski -  
 Victor K -
Bonjour à tous,

Voilà j'ai un petit soucis avec ma macro excel,
Quand je l'ai créer tout fonctionner très bien...
Depuis 1 semaine j'ai des problèmes lors de l'opération de sauvegarde...
C'est à dire que soit elle bug ou soit ça ne fait rien. Pourtant le reste de la macro s’exécute toujours correctement...

Voici la macro :

Private Sub Workbook_Open()

Dim myRange As Range

Set myRange = Range("A" & Rows.Count).End(xlUp)

If Not myRange = Date Then

'j'insert une ligne au dessus de la dernière
myRange.EntireRow.Insert

myRange.EntireRow.Select

'je copie la derniere ligne et je la colle au dessus en dur

Selection.Copy
myRange.Offset(-1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'je met à jour la date de la dernière fois par celle du jour

myRange = Date

'sauvegarder avec la nouvelle date

Dim nom As String
ChDir "C:\Users\vklajnow\Documents\OXXXX PXXXXX\LISTE_KPI"
nom = Range("k1351") & "_" & Year(Date) & "-" & Month(Date) & "-" & Day(Date) & ".xls"
ThisWorkbook.SaveAs (nom)

MsgBox ("KPI mis à jour")
Else
MsgBox ("KPI déjà mis à jour aujourd'hui")
End If
End Sub

Le problème le plus récurrent vient de : ( erreur du debuggeur 1004)

ThisWorkbook.SaveAs (nom)

Merci d'avance pour votre aide,

Cordialement,

Victor K

1 réponse

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Victor, bonjour le forum,

    Peut-être comme ça :

    Private Sub Workbook_Open()
    Dim myRange As Range
    Dim nom As String
    Dim CH As String
    
    Sheets("Feuil1").Select  'nom de l'onglet à adapter
    Set myRange = Range("A" & Rows.Count).End(xlUp)
    If Not myRange = Date Then
        'j'insert une ligne au dessus de la dernière
        myRange.EntireRow.Insert
        myRange.EntireRow.Select
        'je copie la derniere ligne et je la colle au dessus en dur
        Selection.Copy
        myRange.Offset(-1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        'je met à jour la date de la dernière fois par celle du jour
        myRange = Date
        'sauvegarder avec la nouvelle date
        CH = "C:\Users\vklajnow\Documents\OXXXX PXXXXX\LISTE_KPI\"
        nom = CH & Range("k1351").Value & "_" & Year(Date) & "-" & Month(Date) & "-" & Day(Date) & ".xls"
        ThisWorkbook.SaveAs nom
        MsgBox ("KPI mis à jour")
    Else
        MsgBox ("KPI déjà mis à jour aujourd'hui")
    End If
    End Sub


    0
    1. Victor K
       
      Bonjour tout le monde,

      Merci ThauTheme pour ta réponse, mais cela n'a pas fonctionné.
      J'ai résolu le problème en reprenant les précédentes versions.
      Voici le code final qui fonctionne parfaitement :

      'lorsque l'excel s'ouvre

      Private Sub Workbook_Open()

      'ensuite je défini une fonction pour trouver la derniere cellule (où il y a la date de l'excel et donc du KPI

      Dim myRange As Range

      Set myRange = Range("A" & Rows.Count).End(xlUp)

      If Not myRange = Date Then

      'j'insert une ligne au dessus de la dernière
      myRange.EntireRow.Insert

      myRange.EntireRow.Select

      'je copie la derniere ligne et je la colle au dessus en dur

      Selection.Copy
      myRange.Offset(-1).Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False

      'je met à jour la date de la dernière fois par celle du jour

      myRange = Date

      'sauvegarder avec la nouvelle date

      Dim nom As String
      ChDir "C:\Users\vklajnow\Documents\OXXXX PXXXXX\LISTE_KPI"
      nom = Range("k1352") & "_" & Year(Date) & "-" & Month(Date) & "-" & Day(Date) & ".xls"
      ThisWorkbook.SaveAs (nom)

      MsgBox ("KPI mis à jour")
      Else
      MsgBox ("KPI déjà mis à jour aujourd'hui")
      End If
      End Sub

      J'espère que ce que j'ai codé pourra aidé les amateurs et ceux qui cherchent des solutions pour la sauvegarde de fichier qui contiennent la date du jour (très utile pour les KPIs)

      Cordialement,

      Victor K
      0