[Résolu]Problème Macro Export (ne fonctionne plus)

sebm1976

XLDnaute Nouveau
Bonjour à toutes et tous,

Je viens vers vous car je ne parviens pas à résoudre le problème que je rencontre.

En effet, j'ai dans un classeur de suivi des demandes une macro qui lors de sa fermeture exporte les données dans un fichier permettant à nos "clients" de voir si la demande est bien enregistrée et le cas échéant en cours de traitement.

Cette macro fonctionnait sans problème sur le fichier de suivi de l'année précédente, mais pour celui de cette année, j'ai une erreur 57121 (erreur générée par l'application ou l'objet) qui se produit sur la ligne Sheets(ongmois).Activate

Il faut savoir que ce fichier comme celui de l'année précédente est créé à partir d'une trame vierge (avec l'ensemble des macros).

De plus lorsque je charge le fichier de 2014 et que je le ferme, la macro s'exécute sans encombre.

J'ai essayé de nommer directement sans faire appel à la variable ongmois (Sheets("Janvier").Activate) sans plus de réussite.

J'ai essayé suivi.Sheets(ongmois).activate, et même essayé avec un bloc With toujours sans succès.

Par chance je n'ai plus assez de cheveux pour me les arracher.

Je pense que mon code ne doit pas être optimum pour fonctionner dans un cas, mais pas dans l'autre, mais là je sèche, et donc je fais appel à un œil neuf.

Edit : test fait sur Excel 2007. Cela fonctionne.

Merci d'avance pour vos retours.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim delmet, suivi As Object
Dim mois As Variant
Dim nbmois As Integer
Dim ongmois As String
Dim nummet, prod, comp As String
Dim datedem, delai As Date
Dim encours As Boolean
Dim temps As Single

retourmetro = "J:\PRIVE\Métrologie\Retourmetro.xlsx"
plansuiv = "R:\PRIVE\Métrologie\Planning métrologie\Suivi" & Year(Date) & ".xlsm"

If ActiveWorkbook.ReadOnly = True Then
    Exit Sub
Else
    fichcl = MsgBox("Générer le fichier retour métro?", vbYesNo + vbQuestion + vbDefaultButton2, "Export Données")
    If fichcl = vbNo Then
        Exit Sub
    Else
        If Dir("J:\PRIVE\Métrologie\Retourmetro.xlsx") = "" Then
            MsgBox "Fichier Introuvable!", vbOKOnly + vbInformation, "Erreur"
            Exit Sub
        Else
            Set delmet = GetObject(retourmetro)
            If delmet.ReadOnly Then
                MsgBox "Le fichier est déjà ouvert!", vbOKOnly + vbInformation, "Traitement Impossible"
                Exit Sub
            Else
                Set suivi = GetObject(plansuiv)
                mois = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")
                nbmois = Month(Date) - 1
                ongmois = mois(nbmois)
                Application.ScreenUpdating = False
                delmet.Sheets("Feuil1").Activate
                Range("C3").Select
                ActiveCell.Value = Now
                Range("A9").Select
                If ActiveCell.Value <> "" Then
                    Range("A9", Range("F" & Rows.Count).End(xlUp)).Select
                    Selection.Clear
                    Range("A9").Select
                End If
                suivi.Activate
                Sheets(ongmois).Activate
                Range("W4").Select
                comp = Selection.Offset(0, -20).Value
                Do While comp <> ""
                    suivi.Activate
                    If ActiveCell.Value <> "" Then
                        Selection.Offset(1, 0).Select
                        comp = Selection.Offset(0, -21).Value
                    Else
                        If Selection.Offset(0, -22) <> "" Then
                            nummet = Selection.Offset(0, -22).Value
                            prod = Selection.Offset(0, -20).Value
                            datedem = Selection.Offset(0, -3).Value
                            temps = Selection.Offset(0, 3).Value
                            If Selection.Offset(0, -1) <> "" Then
                                delai = Selection.Offset(0, -1)
                            Else
                                delai = Selection.Offset(0, -2)
                            End If
                            If Selection.Offset(0, 2).Value <> 0 Then
                                encours = True
                            Else
                                encours = False
                            End If
                            delmet.Sheets("Feuil1").Activate
                            ActiveCell.Value = nummet
                            Selection.Offset(0, 1).Value = comp
                            Selection.Offset(0, 2).Value = prod
                            Selection.Offset(0, 3).Value = datedem
                            Selection.Offset(0, 4).Value = delai
                            Selection.Offset(0, 5).Value = temps
                            If encours = True Then
                                Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.Row, ActiveCell.Column + 5)) _
                                .Font.Color = -11489280
                            End If
                            Selection.Offset(1, 0).Select
                            suivi.Activate
                            Selection.Offset(1, 0).Select
                            comp = Selection.Offset(0, -21).Value
                        Else
                            suivi.Activate
                            Selection.Offset(1, 0).Select
                            comp = Selection.Offset(0, -21).Value
                        End If
                    End If
                Loop
                delmet.Sheets("Feuil1").Activate
                Range("A9", Range("F" & Rows.Count).End(xlUp)).Borders.Value = 1
                With delmet
                    .Windows(1).Visible = True
                    .Save
                    .Saved = True
                    .Close
                End With
            End If
        End If
    End If
End If

End Sub
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Problème Macro Export (ne fonctionne plus)

Bonjour

cette macro fonctionne à condition que le fichier Suivi2015.xlsm existe dans le répertoire PRIVE\Métrologie\Planning métrologie\


mettre suivi.Sheets(ongmois).Activate :p


pour optimiser il faut fermer le classeur "suivi" avec

with suivi
.close
end with

avant la serie de end if et aussi

remettre application.screenupdating = true

:p

ce qui devrait donner le code suivant

Code:
  Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Dim delmet, suivi As Object
 Dim mois As Variant
 Dim nbmois As Integer
 Dim ongmois As String
 Dim nummet, prod, comp As String
 Dim datedem, delai As Date
 Dim encours As Boolean
 Dim temps As Single
 retourmetro = "J:\PRIVE\Métrologie\Retourmetro.xlsx"
 plansuiv = "R:\PRIVE\Métrologie\Planning métrologie\Suivi" & Year(Date) & ".xlsm"
 If ActiveWorkbook.ReadOnly = True Then
     Exit Sub
 Else
     fichcl = MsgBox("Générer le fichier retour métro?", vbYesNo + vbQuestion + vbDefaultButton2, "Export Données")
     If fichcl = vbNo Then
         Exit Sub
     Else
         If Dir("J:\PRIVE\Métrologie\Retourmetro.xlsx") = "" Then
             MsgBox "Fichier Introuvable!", vbOKOnly + vbInformation, "Erreur"
             Exit Sub
         Else
             Set delmet = GetObject(retourmetro)
             If delmet.ReadOnly Then
                 MsgBox "Le fichier est déjà ouvert!", vbOKOnly + vbInformation, "Traitement Impossible"
                 Exit Sub
             Else
                 Set suivi = GetObject(plansuiv)
                 mois = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")
                 nbmois = Month(Date) - 1
                 ongmois = mois(nbmois)
                 Application.ScreenUpdating = False
                 delmet.Sheets("Feuil1").Activate
                 Range("C3").Select
                 ActiveCell.Value = Now
                 Range("A9").Select
                 If ActiveCell.Value <> "" Then
                     Range("A9", Range("F" & Rows.Count).End(xlUp)).Select
                     Selection.Clear
                     Range("A9").Select
                 End If
                 suivi.Activate
                 Sheets(ongmois).Activate
                 suivi.Range("W4").Select
                 comp = Selection.Offset(0, -20).Value
                 Do While comp <> ""
                     suivi.Activate
                     If ActiveCell.Value <> "" Then
                         Selection.Offset(1, 0).Select
                         comp = Selection.Offset(0, -21).Value
                     Else
                         If Selection.Offset(0, -22) <> "" Then
                             nummet = Selection.Offset(0, -22).Value
                             prod = Selection.Offset(0, -20).Value
                             datedem = Selection.Offset(0, -3).Value
                             temps = Selection.Offset(0, 3).Value
                             If Selection.Offset(0, -1) <> "" Then
                                 delai = Selection.Offset(0, -1)
                             Else
                                 delai = Selection.Offset(0, -2)
                             End If
                             If Selection.Offset(0, 2).Value <> 0 Then
                                 encours = True
                             Else
                                 encours = False
                             End If
                             delmet.Sheets("Feuil1").Activate
                             ActiveCell.Value = nummet
                             Selection.Offset(0, 1).Value = comp
                             Selection.Offset(0, 2).Value = prod
                             Selection.Offset(0, 3).Value = datedem
                             Selection.Offset(0, 4).Value = delai
                             Selection.Offset(0, 5).Value = temps
                             If encours = True Then
                                 Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.Row, ActiveCell.Column + 5)) _
                                 .Font.Color = -11489280
                             End If
                             Selection.Offset(1, 0).Select
                             suivi.Activate
                             Selection.Offset(1, 0).Select
                             comp = Selection.Offset(0, -21).Value
                         Else
                             suivi.Activate
                             Selection.Offset(1, 0).Select
                             comp = Selection.Offset(0, -21).Value
                         End If
                     End If
                 Loop
                 delmet.Sheets("Feuil1").Activate
                 Range("A9", Range("F" & Rows.Count).End(xlUp)).Borders.Value = 1
                 With delmet
                     .Windows(1).Visible = True
                     .Save
                     .Saved = True
                     .Close
                 End With
                 With suivi
                 .Close
                 End With
             End If
         End If
     End If
 End If
 Application.ScreenUpdating = True
 
 End Sub
 
Dernière édition:

sebm1976

XLDnaute Nouveau
Re : Problème Macro Export (ne fonctionne plus)

Merci Gilbert d'avoir pris le temps de jeter un œil.

Cependant , j'avais déjà essayé la solution du suivi.Sheets(ongmois).Activate.

Le fichier suivi est bien sous la bonne arborescence. Je n'ai pas de problème lors du suivi.Activate

Il y a vraiment un problème pour activer la feuille ongmois. Par acquis de conscience j'ai même fait un test en nommant directement la feuille (sheets("Janvier")) avec pour résultat la même erreur.

Fait nouveau, une macro que j'ai utilisé lundi et qui fonctionnait parfaitement plante aujourd'hui sur le même type d'évènement (ce n'est pas la même macro). Erreur lorsque j'appelle Sheets(ongmois).

J'ai l'impression qu'il y a eu une màj Excel 2010 qui pose ce problème.

Si il y a d'autres idées je suis toujours preneur.

Merci d'avance.
 

gilbert_RGI

XLDnaute Barbatruc
Re : Problème Macro Export (ne fonctionne plus)

Bonjour

je viens de refaire le test et ça fonctionne pour moi en Excel 2007

j'ai eu la même erreur avec le nom de l'onglet mais j'ai refait le fichier Suivi2015.xlsm avec de nouveaux noms d'onglet et là ça fonctionne
j'avais testé avec sheets(1) et ça fonctionnait aussi :cool:

désolé
 
Dernière édition:

sebm1976

XLDnaute Nouveau
Re : Problème Macro Export (ne fonctionne plus)

Avec un peu de retard,

J'ai pu faire le test chez moi sur un Excel 2010 et ça fonctionne.

Je pense que c'est du à une màj d'Excel, ma société prenant le temps de mettre en place les correctifs (test avant déploiement).

Je vais passer sous statut résolu.
 

Statistiques des forums

Discussions
312 083
Messages
2 085 175
Membres
102 807
dernier inscrit
Routier78