Microsoft 365 Erreur 1004 méthode Select Range a échoué [Résolu]

pierrot63270

XLDnaute Nouveau
Bonjour,

j'ai une erreur 1004 La méthode Select de la classe Range a échoué dans un fichier de suivi (cf. ci-joint).
En règle générale, le code s'exécute à chaque fois que l'on ferme le fichier (Private Sub Workbook_BeforeClose(Cancel As Boolean).
Autant le code s'exécute bien quand, j'ouvre, mets à jour le fichier puis utilise le fichier "seul". Quand je ferme le fichier le code s'exécute correctement.
Toutefois, ce fichier fait l'objet de mises à jour régulières, avec d'autres fichiers. J'ai créé un bouton dans un autre fichier qui permet de mettre à jour tous les fichiers qui doivent l'être. Or, quand j'actualise via ce bouton, le code du fichier à la fermeture plante et j'ai cette erreur au niveau de la ligne Range("DDP[demandePaiementPk]").Select

Au niveau du bouton, c'est le code suivant :
Workbooks.Open Filename:= _
"chemin d'accès au fichier sur le serveur"
ActiveWorkbook.RefreshAll
ActiveWorkbook.Close

Si quelqu'un avait une idée du pourquoi du plantage...
merci par avance de votre aide.
Bonne journée

Pierrot63270
 

Pièces jointes

  • Suivi_CSF_Synergie_V1.xlsm
    353.2 KB · Affichages: 13

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @pierrot63270 , le Forum

J'ai du mal à interpreter :
Range("DDP[demandePaiementPk]").Select

Je suis intrigué que ca puisse fonctionner, car dans le gestionnaire de nom, tu n'as que "DPP" déclaré...

1589365183830.png


Ensuite, le fait d'ouvrir plusieurs classeurs nécessite souvent que les codes VBA soient bien définis pour que VBA ne se "perde" pas entre les classeurs... Je préciserais comme ceci :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WS As Worksheet

Set WS = ThisWorkbook.Worksheets("DDP")
WS.Select
WS.Range("DDP").Select '<<< toujours perplexe avec ("DDP[demandePaiementPk]")
'....... Etc

Bon appétit
@+Thierry
 

pierrot63270

XLDnaute Nouveau
Merci Thierry de ta réponse.
J'ai mis Range("DDP[demandePaiementPk]").Select pour que ne pas mettre de référence à une cellule et de fin pour le tri, le tableau s'incrémentant au fil des MAJ. Donc je voulais faire référence à la colonne demandePaiementpk du tableau DDP. J'avais fait la même chose dans l'onglet CSF.
Après test, ça ne fonctionne pas mieux. J'ai la même erreur.
J'ai essayé de définir la plage dans le gestionnaire de nom, mais pas mieux.
Je vais continuer à chercher en attendant d'autres solutions.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
bonjour @_Thierry

Changement de la procédure Before_Close :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ws As Worksheet
    Dim lo As ListObject
    Dim Nom As Variant

    ' tri des deux tableaux

    For Each Nom In Array("DDP", "CSF")

        Set ws = ThisWorkbook.Sheets(Nom)
        Set lo = ws.ListObjects(Nom)

        With lo.Sort
            With .SortFields
                .Clear
                .Add Key:=lo.ListColumns(1).Range, SortOn:=xlSortOnValues, _
                     Order:=xlAscending, DataOption:=xlSortTextAsNumbers
            End With
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    Next
    ActiveWorkbook.Save
End Sub

comme le disait fort justement @_Thierry il est toujours préférable de référencer les objets sur lesquels on travaille et s'agissant de classeur et de feuille par LeClasseur.LaFeuille

ActiveWorkbook : classeur actif à un moment donné (forcément variable)
ThisWorkbook : classeur contenant la macro (invariable)

Cherchez l'erreur que j'ai laissé.

Cordialement
 

Pièces jointes

  • Suivi_CSF_Synergie_V1.xlsm
    350.9 KB · Affichages: 7

pierrot63270

XLDnaute Nouveau
Bonjour Roblochon,
merci de ta réponse. Je pense que l'erreur c'est le ActiveWorkbook.save qui devrait être un thisworkbook.save si je suis ta logique.
Sinon, ça marche nickel de mon côté, que j'exécute le code en direct à la fermeture de manière manuelle ou via ma procédure de MAJ global de mes différents fichiers !
Bonne journée.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.