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
 

Fichiers joints

_Thierry

XLDnaute Barbatruc
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.
 

Roblochon

XLDnaute Barbatruc
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
 

Fichiers joints

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.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas