Problème "Erreur 1004"

Bonjour tout le monde,

SVP j'ai besoin de votre aide sur un fichier, avec une compilation de plusieurs commandes dans une macro,

sur mon poste je n'ai aucun problème avec le fichier, tout fonctionne parfaitement, par contre sur d'autres postes cela ne fonctionne pas et affiche l'erreur 1004.

la voila ma macro, j'espère que vous pouvez m'apporter une solution. je vous en remercie d'avance

je vais joindre une version spéciale de mon fichier, vu que l'original contiens des données confidentielles

 Sub Coller_nommer()

    Application.DisplayAlerts = False

    ' Effacer les cellules
    Sheets("Plan formation").Select
    Range("A1:w5000").Select
    Selection.ClearContents

    'Pour coller les cellules copiées sans la mise en forme (Valeurs)

    Sheets("Plan formation").Activate
    Sheets("Plan formation").Select
    Range("A1").Select
ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
        False

        'Pour convertir la colonne "J" en format date locale (France)

        Columns("j:j").TextToColumns Destination:=Range("j1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True

        'Pour convertir la colonne "O" en format date locale (France)

        Columns("o:o").TextToColumns Destination:=Range("o1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True

        'Pour donner un nom au cellules collées
        Sheets("Plan formation").Select
        liste = Range("A1:w5000").Address
        ActiveWorkbook.Names.Add Name:="BDD_PF", RefersToR1C1:=Range(liste)

    'Filtre élaboré "sans doublons" sur la liste des salariés

    Sheets("Plan formation").Select
    Range("AA1:AA500").Select
    Selection.ClearContents

    Sheets("Plan formation").Select
    Columns("B:B").Select
    Range("B1:B5000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
        "AA1"), Unique:=True

    'Tri liste salariés
    Sheets("Plan formation").Select
    Columns("AA:AA").Select
    Selection.Sort Key1:=Range("AA1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

    'Donner un nom à la liste
    Sheets("Plan formation").Select
        liste = Range("Aa2:aa300").Address
    ActiveWorkbook.Names.Add Name:="Liste_sal", RefersToR1C1:=Range(liste)

    'Revenir sur la feuille de saisie :
    Sheets("Saisie").Select

    MsgBox "Le contenu a bien été copié !"

End Sub

Bonjour,

Vu que tu as une version 2003 qui ne pose pas de soucis, ça pourrait être un problème de version Excel. Merci de joindre le fichier avec la macro pour le test.

Merci pour votre réponse,

non il ne s'agit pas d'un problème de version, tous les postes sont équipés de la version 2003 d'office. en fait le fichier contient des informations confidentielles, si c'est vraiment nécessaire de le joindre, je peux essayer d'en faire une version spéciale?

Ah oui pour préciser la ligne de l'erreur, c'est celle-ci :

    ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
        False

Re,

Est-ce normal que je ne vois pas de code qui fait la copie avant de coller ?

Oui, c'est normal, la copie se fait sur un autre fichier.

Bonjour,

Merci de joindre un fichier "spécial" afin que le forum puisse intervenir.

Cdlt.

Re,

Le contenu de la copie peut être dans un autre fichier mais où est la ligne qui effectue la copie (code) dans ta macro ?

Bonjour,

Il manque des éléments, comme déjà soulevé, mais en outre ce code pose problème ! Il est commenté par "copier en valeurs..."

Cela, se fait avec la méthode Range.PasteSpecial xlPasteValues

Pas avec Worksheet.PasteSpecial dévolu au collage de données externes, et dans lequel Format indique le format d'origine de la copie (avec mention de l'application d'origine).

De plus, effacer des cellules après copie et avant de coller vide en principe le presse-papier, donc erreur au collage.

Le mystère serait plutôt que ça marche sur certaines machines !

Cordialement

Ferrand

Bonjour,

Il manque des éléments, comme déjà soulevé, mais en outre ce code pose problème ! Il est commenté par "copier en valeurs..."

Cela, se fait avec la méthode Range.PasteSpecial xlPasteValues

Pas avec Worksheet.PasteSpecial dévolu au collage de données externes, et dans lequel Format indique le format d'origine de la copie (avec mention de l'application d'origine).

De plus, effacer des cellules après copie et avant de coller vide en principe le presse-papier, donc erreur au collage.

Le mystère serait plutôt que ça marche sur certaines machines !

Cordialement

Ferrand


Merci pour votre réponse,

j'ai testé sans la suppression des cellules avant le collage sur les autres postes, et cela ne change rien, toujours la meme erreur 1004.

j'ai essayer de faire une version sans les données confidentielles (en PJ) . normalement la plage à copier se trouve dans un autre fichier excel, et là je l'ai intégré dans le même, j'espère que cela ne va rien changer par rapport au code vba

MFerrand a écrit :

Bonjour,

Il manque des éléments, comme déjà soulevé, mais en outre ce code pose problème ! Il est commenté par "copier en valeurs..."

Cela, se fait avec la méthode Range.PasteSpecial xlPasteValues

Pas avec Worksheet.PasteSpecial dévolu au collage de données externes, et dans lequel Format indique le format d'origine de la copie (avec mention de l'application d'origine).

De plus, effacer des cellules après copie et avant de coller vide en principe le presse-papier, donc erreur au collage.

Le mystère serait plutôt que ça marche sur certaines machines !

Cordialement

Ferrand

J'ai réussi à résoudre mon problème en enlevant le vidage des cellules avant de coller et en changeant la commande de mon collage aussi. Par contre j'ai un nouveau problème, c'est que, après le collage il me rajoute 4 an et 1 jour sur mes champs date , c'est vraiment bizarre, je n'arrive pas à trouver d'où cela pouvait venir, avez vous une idée ?

Merci

 Sub Coller_nommer()

    Application.DisplayAlerts = False

    'Pour coller les cellules copiées sans la mise en forme (Valeurs)

    Sheets("Plan formation").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues

    'ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
     '   False

        'Pour convertir la colonne J en format date locale (Fr)

        Columns("j:j").TextToColumns Destination:=Range("j1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True
         'Pour convertir la colonne O en format date locale (Fr)
        Columns("o:o").TextToColumns Destination:=Range("o1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True

    'Pour donner un nom au cellules collées
    Sheets("Plan formation").Select
    liste = Range("A1:w5000").Address
    ActiveWorkbook.Names.Add Name:="BDD_PF", RefersToR1C1:=Range(liste)

    'Filtre élaboré sur les salariés

    Sheets("Plan formation").Select
    Range("AA1:AA500").Select
    Selection.ClearContents

    Sheets("Plan formation").Select
        Columns("B:B").Select
    Range("B1:B5000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
        "AA1"), Unique:=True

    'Tri liste salariés
    Sheets("Plan formation").Select
    Columns("AA:AA").Select
    Selection.Sort Key1:=Range("AA1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

    'Donner un nom à l liste
    Sheets("Plan formation").Select
        liste = Range("Aa2:aa300").Address
    ActiveWorkbook.Names.Add Name:="Liste_sal", RefersToR1C1:=Range(liste)

'Dim plage As Range
      '  Set plage = [j1:j5000]
      '  For Each cell In plage
      '  If IsEmpty(cell) Then cell.Value = ""
      '  Next

        'Revenir sur une feuille :
    Sheets("Saisie").Select

    MsgBox "Le contenu du PLAN DE FORMATION a été copié !"

End Sub

Bonsoir,

Là je ne saurais te dire. En plus des problèmes auxquels je m'attendais, difficultés avec la feuille à copier. En éliminant l'erreur sur le collage, elle s'est transférée sur la copie. Et les quelques fois où ça a été jusqu'au collage j'ai eu un collage avec des colonnes en désordre, le tout sans explication apparente au niveau du code. J'ai dû recopier cette feuille sur une nouvelle feuille pour aboutir.

Par contre je ne note pas d'écart de dates entre la copie et la feuille copiée, mais les dates ne sont pas apparentes sur la feuille originale à copier (?)

Re,

C'est ici que ça se passe mal :

 'Pour convertir la colonne J en format date locale (Fr)
Columns("j:j").TextToColumns Destination:=Range("j1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True

Remplace par ce code :

Columns("j:j").NumberFormat = "dd/mm/yyyy"

Ou bien quand la copie s'effectue, il faut copier tout en faisant ceci :

Selection.PasteSpecial Paste:=xlPasteAll

et supprimer le formatage prévu ci-dessous.

NB: je n'ai jamais compris pourquoi 2 modules, 1 pour copier déclenché par un bouton de commande et 2ème déclenché manuellement après par l'éditeur VBE (probablement par la touche F5 ou Exécuter) Il y a des façons simples pour procéder à une copie.

Au temps pour moi pour les dates, je n'avais pas déroulé entièrement, il n'y en a pas partout, mais elles ont bien été copiées.

Je partage l'avis de Raja sur les formats...

Bye

Bonjour MFerrand,

je vous remercie pour votre aide. en fait ce fichier là n'est qu'une version où j'ai enlevé plusieurs feuilles et quelques formules pour avoir des données que je peux partager, j'ai essayé de l'approcher au maximum à ce que j'ai.

Mais finalement j'ai réussi à corriger ces problèmes, pour le collage j'ai modifier la commande, et le problème des dates ça vient de mon fichier où dans Outil/Options/Calcul la case calendrier depuis 1904 été cochée, je l'ai décochée est tout est rentré dans l'ordre .

je vous remercie tous pour votre aide et votre disponibilité

MFerrand a écrit :

Bonsoir,

Là je ne saurais te dire. En plus des problèmes auxquels je m'attendais, difficultés avec la feuille à copier. En éliminant l'erreur sur le collage, elle s'est transférée sur la copie. Et les quelques fois où ça a été jusqu'au collage j'ai eu un collage avec des colonnes en désordre, le tout sans explication apparente au niveau du code. J'ai dû recopier cette feuille sur une nouvelle feuille pour aboutir.

Par contre je ne note pas d'écart de dates entre la copie et la feuille copiée, mais les dates ne sont pas apparentes sur la feuille originale à copier (?)


Je vous remercie Raja pour votre aide

en fait la copie se fait à partir d'une autre feuille dans un autre fichier, je l'ai seulement intégrée sur le même fichier pour la version spéciale qui combine les deux fichier que j'utilise.

c'est bon maintenant le fichier fonctionne correctement sur tous les postes. mais je vais quand même essayer de simplifier la modification des champs en format date comme vous m'avez indiquer, meme si il me semble que j'avais rencontrer des problème avec le code (Columns("j:j").NumberFormat = "dd/mm/yyyy), je vais retester pour voir, aussi je vais essayer de me passer de cette commande si la copie se fait en gardant le format date avec (Selection.PasteSpecial Paste:=xlPasteValues) . merci encore à tout le monde

bonne soirée à tous

Raja a écrit :

Re,

C'est ici que ça se passe mal :

 'Pour convertir la colonne J en format date locale (Fr)
Columns("j:j").TextToColumns Destination:=Range("j1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 4)), TrailingMinusNumbers:=True

Remplace par ce code :

Columns("j:j").NumberFormat = "dd/mm/yyyy"

Ou bien quand la copie s'effectue, il faut copier tout en faisant ceci :

Selection.PasteSpecial Paste:=xlPasteAll

et supprimer le formatage prévu ci-dessous.

NB: je n'ai jamais compris pourquoi 2 modules, 1 pour copier déclenché par un bouton de commande et 2ème déclenché manuellement après par l'éditeur VBE (probablement par la touche F5 ou Exécuter) Il y a des façons simples pour procéder à une copie.

Rechercher des sujets similaires à "probleme erreur 1004"