Error automation | méthode inserer range a échouée

Bonjour,

Je révise un code qui fonctionnait jusqu'alors comme hier, mais là c'est un souci de variable il me semble? mais il me semble car je ne trouve pas...

C'est un code qui fonctionne sur un seul et même classeur. J'ai un onglet Commande et selon les lignes de commande, j'ai des fiches de suivi dans les onglets. Le fichier tourne plutôt bien sauf, lorsque je dois faire des productions partielles. Car ici cela me demande de copier la ligne de commande d'origine et de la dupliquer "insérer" en dessous de la ligne puis d'apporter à l'une et à l'autre, deux trois infos. mais çà c'est ok, lorsque que la copie passe.

Bref, le code fonctionne une fois et si je réitère la requête , la macro plante systématiquement.

J'enregistre, je ferme Excel et la macro re fonctionne une seule fois...

J'ai tenté différentes approches mais je coince.

EDIT : J'avais mis le code puis j'ai déposé un fichier un peu plus loin dans ce fil.

J'ai remis là où cela coince

plage.Offset(1, 0).Insert shift:=xlDown

                       Set plage = Com.Range(Com.Cells(Id, 1), Com.Cells(Id, 28))
                            plage.Copy
                            plage.Offset(1, 0).Insert shift:=xlDown
'                                .Range(.Cells(Id, 1), .Cells(Id, 28)).Copy
'                                .Range(.Cells(Id + 1, 1), .Cells(Id + 1, 28)).Insert shift:=xlDown
                            Application.CutCopyMode = False

J'ajoute qu'après le debuggage, la ligne est bien copiée, mais c'est comme pour si pour libérer la plage il y a avait un truc?

Merci

Leakim

Bonjour

A tout hasard l'erreur ne viendrait elle pas des 2 apostrophes devant les lignes Range que je viens de supprimer

Crdlt

 Set plage = Com.Range(Com.Cells(Id, 1), Com.Cells(Id, 28))
                            plage.Copy
                            plage.Offset(1, 0).Insert shift:=xlDown
                                .Range(.Cells(Id, 1), .Cells(Id, 28)).Copy
                               .Range(.Cells(Id + 1, 1), .Cells(Id + 1, 28)).Insert shift:=xlDown
                            Application.CutCopyMode = False

Bonjour et merci de ton intérêt, mais non c’est une trace des nombreux essais.

J’avais commencé par ces deux premières lignes. Puis je suis allé vers Set plage ...

Tiens j’irai bien à la plage !

Merci encore

Leakim

Bonjour à tous,

With ActiveSheet

ce n'est jamais une bonne idée de l'employer. Selon la feuille affichée au lancement de la macro, ça fonctionnera ... ou pas ...

il vaut mieux utiliser

With WorkSheets("NomdelaFeuille")

Par ailleurs,

1) Set OCom = Worksheets("Commande")
...
2) Set listemap = Com.Columns("C")
...
2)With Com
.../...

2)Set Com = Nothing
...

1) La variable Ocom n'est pas déclarée ni utilisée mais initialisée

2) La variable Com est déclarée et utilisée mais pas initialisée

curieux que ça fonctionne au moins une fois ???

Avec un classeur, on pourrait voir ce que veut dire "...cela coince..." , et mener des tests

A+

Bonjour et merci de ta sollicitude,

Je vais faire la correction de OCom dans le code car c'est une erreur de copier coller. Désolé. C'est bien Set Com.

Le fait d'utiliser active sheet c'est parce que je lance la macro depuis la feuille de suivi, puis je vais sur la feuille commande pour revenir sur la feuille de suivi... c'est bien la bonne piste alors...

Je vais voir si je peut pas lancer la macro depuis la feuille commande ou de tout autre part ?

Pour le fichier, j'y pense bien mais c'est un lourd boulot d'anonymisation. C'est en cours mais pas pour ce soir.

Leakim

Bonjour,

tu travaille bien avec un classeur en local et non sur un serveur ?
eric

Bonjour,

Et oui, j'ai omis de préciser que lorsque je travaille sur mon poste tout tourne, mais le cas échéant c'est bien sur un serveur que le fichier est partagé entre deux à trois sites de productions.

Depuis, deux années cela tournait sans souci en local comme sur serveur, mais depuis deux trois mois, j'ai des bug ici ou là. notamment avec les liens hypertextes qui ne sont plus supportés. Je suis donc passé par des macros avec le concours de Jean-Eric que je remercie de nouveau.

J'ai lu que cela pouvez venir d'un souci de mise à jour et là, sur le serveur c'est pas moi qui gère ... et puis pas question de mettre en place de module complémentaires.

Bien vue eriiic

Leakim

Voici le fichier avec le code.

Merci encore.

Leakim

1220210318xlp.xlsm (277.70 Ko)

Bonjour,

je pense que seul le gestionnaire du réseau pourra résoudre ce pb, il faudrait lui en parler.
Sans grande conviction : si tu attends 3 s avant le 2nd essai ça améliore ?

Quelles manips faire pour provoquer l'erreur ?
eric

Bonjour,

Tu confirmes que le code fonctionne en local ?

La nuit pourtant conseil, j'ai deux hypothèses :

Je mets le code dans la feuille plutôt que dans un module? même si j'ai lu que l'inverse est le mieux?

Je crée les références en dur avec Set Feuil1 = activesheet() et Set Com = workseets("Commande") puis dans le code, je navigue avec feuil1 et Com.

Quelqu'un pour m'orienter?

Leakim

Re,

J'ai tenté de mettre le code en private mais non pas mieux...

Alors j'ai découpé le code comme ci-dessous

EDIT : Fichier retiré, j'ai remis un fichier à jour un peu plus bas.

J'ai réussit 8 fiches à la suite ! je pensais être tranquille, mais, non l'erreur est revenue. J'ai donc décidé de la gérer et générer un reboot du fichier de sorte à relancer la mémoire, car là, dès la relance du fichier l'erreur disparaître pour de nouveau 7 à 8 fois...

C'est pas top, mais c'est beaucoup mieux.

Si vous avez des commentaires pour que j'améliore encore le process, n'hésitez pas !

Leakim

Bonjour,

Je ne confirme rien du tout
J'ai juste ouvert le classeur, vu plein de feuilles avec plein de valeurs et demandé les manip à faire.
eric

Bonjour,

Pardon, j'ai ôté l'onglet du tableau de bord avec la marche à suivre.

Sur un onglet autre que commande, il y a un icone camembert dans un encart nommer Prod partielle. Celui-ci lance la macro partielle si il y a un bien une donnée en B41 de ce même onglet.

Merci

Leakim

Bonjour le code posté précédement et différent de celui dans le fichier...

surtout au niveau de la définition plage ???

- pour le Dim Id as string pour un numéro ligne ce serait plus du Dim Id as long.

Trouve pas plus vu que chez moi çà plante carément mon excel dès le lancement de la macro comme si quelques chose continue de tourner en boucle.

Set plage = .Range(.Cells(Id, 1), .Cells(Id, 28))
                plage.Copy
                plage.Offset(1, 0).Insert shift:=xlDown
                Application.CutCopyMode = False

' et dans le fichier 
Set plage = Com.Range(Com.Cells(Id, 1), Com.Cells(Id, 28))
                            plage.Copy
                            plage.Offset(1, 0).Insert shift:=xlDown
                            Application.CutCopyMode = False

Bonjour,

Je suis désolé que la macro te fasse bugger excel... mais en voilà une info qu'elle est bonne pour soulever l'énigme.

Suite à ton info, j'ai regardé ce qui pourrez tourner en backstage et bien j'ai trouvé que les plages nommées se dupliquent pour chaque onglet.

J'ai les donc supprimé.

Merci pour cette info.

Je remets le fichier avec le code. A tester !

Leakim

520210318xlpv2.xlsm (294.93 Ko)
Rechercher des sujets similaires à "error automation methode inserer range echouee"