Problème macro excel

Fermé
Victor klajnowski - 7 sept. 2016 à 09:40
 Victor K - 21 sept. 2016 à 11:05
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

A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
7 sept. 2016 à 15:23
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
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