Optimisation programme

Bonjour,

Je créer en ce moment une macro afin de mettre à jour un fichier "programme" avec un fichier "source".

Etant novice en VBA (ce début de semaine), j'ai pris des exemples de macro à droite et à gauche sur internet, j'ai également enregistré des macros... Mais mon volume de traitement est très important (fichier de plus de 10 000 lignes).

Pouvez-vous m'aider à optimiser ce début de code afin de gagner en rapidité ? Faut-il travailler dans le même classeur pour gagner en rapidité ?

Il me faut environ 6-7 minutes pour contrôler 1000 lignes car ma macro doit vraiment mal être codée.

Il me reste encore à faire 2 vérifications de cellules à "emplacement fixe" avec le "cherche et trouve" existant

et un "copie/colle" si "pas trouvé".

Les colonnes du fichier source peuvent ne pas être au même endroit en fonction des extractions. Ce qui explique les lignes "trouve l'index de colonne de la valeur cherchée"

J'ai essayé de ranger un peu tout sa...

J'ai la possibilité d'être sur un vocal pour expliquer la macro et/ou mieux comprendre vos remarques.

15source-exemple.xlsx (19.93 Ko)

Merci d'avance

bonjour,

Ton fichier programme n'est pas compilable. Merci de corriger ce qui manque...

A+.

Un Sub qui à été supprimé. J'ai corrigé le fichier.

Merci.

bonjour,

Je ne me suis pas occupé des modules "essai" que j'ai purement et simplement supprimés.

Bon j'ai un peu avancé , mais je bute sur une incohérence que je ne sais pas résoudre :

Dans la Sub Ecriture_Source_Sur_Programme()

  Date1 = c1.Offset(, 30).Value 'et lignes suivantes...

Or c1 n'est pas encore initialisé...

Je ne peux optimiser que des programmes qui fonctionnent !

A+

Quand j'ai modifié le programme pour l'upload ici, je me suis dis "tiens la boucle gagnerais du temps si je sort :

Date1 = c1.Offset(, 30).Value 'et lignes suivantes...

Mais c'est sur que c'est n'importe quoi....

J'ai donc remis ce morceau de code à sa place, en dessous de :

 Set c1 = .Find(Rng1, LookIn:=xlValues)

(j'ai à nouveau upload le fichier)

Oui les modules essais me servent à découvrir/modifier du code. Ils ne servent donc à rien.

J'ai voulu découpé le code afin de le rendre visible et le module "A_Appel_modules" appel les autres modules dans l'ordre.

Encore merci pour ton aide.

J'espère que tu n'as rien modifié d'autre... Je te fais confiance je rajoute juste cette ligne.

Je ne m'amuse pas à recharger ce fichier.

J'ai déjà passé 2 heures à tout démonter, remonter toussa pour un code foireux...

Si ça marche tant mieux... Si ça marche pas, au moins tu auras un aperçu d'un code correct... Après TORAPUKA corrigé mes erreurs !

Bon je m'y remet après la sieste !

A+

J'ai pas ajouté la ligne, j'ai déplacé tout le code "date" (de 1 à 16) sous :

For Each Rng1 In Worksheets("Tableau par code projet").Range("A6", Worksheets("Tableau par code projet").Range("A" & Worksheets("Tableau par code projet").Rows.Count).End(xlUp))
    Trouver = False
    With WkbP.Worksheets("Programme").Range("A:A")
    Set c1 = .Find(Rng1, LookIn:=xlValues)

Qui se trouvait juste en dessous du code "date". J'epère que tu lira ce message avant tes modifications.

Courage et merci.

Bon. Pour l'instant je suis perdu... au milieu du truc !

Je recommencerai demain.

A+

Si tu veux on peut se parler sur un vocal afin que je t'explique ce que j'ai voulu faire ?

Ou sinon je rajoute en commentaires dans le fichier ?

Merci pour ton aide en tout cas !

Non c'est bon, c'est surtout de concentration dont j'ai besoin...

C'est un peu comme ranger la chambre des ados, tu sais quand tu rentres mais pas quand tu va en ressortir !

A+

bonjour,

Bon écoute, J'ai assez perdu de temps avec ce truc, je jette l'éponge !

Ça marche comme ça : YAPA de raison de se casser le bonnet pour une macro de 40 Ko.

Comme YA pas mal de monde qui se bouscule au portillon, je vais passer à autre chose... Sinon tout le monde va attendre et personne ne sera content !

Désolé.

A+

Bonjour !

Ok il n'y à pas de soucis, je comprend très bien. Peux-tu juste me donner ce que tu a fait ?

J’essayerais de comprendre et je vais fouiller un peut sur le net.

Par la suite je posterais que des "morceaux" de macro pour y aller pas à pas et éviter de prendre trop de temps. Du moment qu'elle ne tourne pas une heure comme en ce moment sa sera le principal !

Encore merci pour ton investissement !

bonjour,

Euh ! C'est tellement bogué à mort qu'il n'y a rien à comprendre ! J'ai encore une ou 2 variables à clarifier puis...

Il faut que je débogue ligne par ligne, puis quand ça marchera je voudrai transformer tes séries de variables en Array...

Mais pour l'instant il faut que je me déconnecte de ça, ça me prend trop la tête...

Ça ne veut pas dire que je laisse complètement tomber... juste que je me donne du temps pour classer mes priorités.

Donc je terminerai ça, quand je m'ennuierai... Une semaine, 15 jours, un mois... Je ne sais pas. mais je ne veux pas me mettre la pression là-dessus, tu comprendras en jetant un coup d'œil dessus que je regarde ça sous un angle très différent...

Je me dis d'ailleurs que j'ai peut-être eu tort :

J'aurai du partir de 0, monter 2 array Source et Cible et les comparer. Point.

Je me suis enquiquiné pour rester un peu près de ta structure, mais finalement c'est un peu comme faire traduire du chinois en arabe par un interprète russe...

A+

Rechercher des sujets similaires à "optimisation programme"