Boucles sur une ligne

Je n'ai quasiment pas eu une minute à moi aujourd'hui. J'ai pas arrêté de cavaler... Je viens de me remettre au clavier.

Je vais bosser un bon moment dessus et demain aussi : Mon épouse sera à l'extérieur une bonne partie de la journée, je pourrai me concentrer la dessus sans être interrompu toute la journée et même une bonne partie du WE si nécessaire : Samedi elle sera pas , elle bosse toute la journée...

J'étais en train de tester une autre option au lieu de travailler en ouvrant chaque méga-fichier, je travaille avec une arborescence vide. La méga-trame vide étant ouverte je fais SaveCopyAs... le chemin désiré. Je boucle avec la Sub Galopin que je bricole et peux tester en même temps... Je sauve et je referme.

Et je recommence à nouveau avec la méga-trame vide, je SaveCopyAs... je modifie... et je ferme...

Avantage : Je ne perd pas de temps à ouvrir de fichier puisque je pars de la méga-trame vide qui reste toujours ouverte et je teste au fur et à mesure...

Bon ça c'est la théorie... Je te dis bien que la mise en pratique n'a pas duré longtemps car Mme Galopin a pas arrêté de me tanner aujourd'hui... Bon j'y retourne !

A+

Re... Bon finalement je vais avoir droit à 2 jours relax.

Je pense avoir effectué les corrections qui s'imposent (à l'exceptions de ce 0006 qui figure dans iL05 mais pas dans la BASE) de ce fait le Dico est incomplet. Moi je ne sais pas gérer mais si tu rajoutes le 0006 à la BASE, ça devrait dérouler...

Bon je te donne la Sub corrigée.

Sub Galopin()
Dim rng As Range, ArrS, iC%, iRS&, iRC%, Ws%, NiD$, k%, iCF%, iMem%
Dim WbC As Workbook     'Cible
Dim WWbC$    'WayOfWorkbookCible
'Comprenez :
'iRS signifie iRowSource...  & signifie As Long
'iRC  signifie  iRowCible...  & signifie As Long
'iC signifie  Numéro d'index de la feuille cible
'NiD la valeur de key du Dico
'k est la position (index) de cette key
'iCF est le N° du premier batiment
Application.ScreenUpdating = False
LoadDicoC
Set rng = Worksheets("iL05").[A1].CurrentRegion
With rng
   Set rng = .Offset(1).Resize(.Rows.Count - 1)
End With
   ArrS = rng.Value   'ArrS est l'équivalent Array de rng et s'utilise exactement comme Cells
   'ArrS est maintenant la source des données (plus rapide à manipuler que le range A2:G83846)
   For iRS = 1 To UBound(ArrS)                  'On parcoure la colonne 1 de ArrS
      On Error Resume Next
         If ArrS(iRS, 1) <> Val(NiD) Then            'Si le N° Change
            WbC.Close (True)                          'on ferme le classeur cible ouvert (s'il y en a un !)
            On Error GoTo GESTERR
            NiD = ArrS(iRS, 1)
            k = Application.Match(NiD, DicoC.keys, 0) 'Sinon on lit la position (k) de Nid dans le Dico
            WWbC = ArrW(k, 1)                         'et on lit la valeur de WWbC dans l'Array de travail
            Workbooks.Open WWbC                       'YAPUKA ouvrie le classeur cible...
            Set WbC = ActiveWorkbook
            iC = 2
            iRC = 7
            iCF = ArrS(iRS, 2)
            iMem = ArrS(iRS, 2)                       'mémorisation de ArrS(iRS, 2)
         ElseIf ArrS(iRS, 1) = Val(NiD) And ArrS(iRS, 2) = iMem Then
            iRC = iRC + 48                            'Si le batiment est le même
         ElseIf ArrS(iRS, 1) = Val(NiD) Then
            iC = iC + 1
            iRC = 7                                   'initialisation de iRC si changement de feuille cible
            iCF = ArrS(iRS, 2)
            iMem = ArrS(iRS, 2)                       'mémorisation de ArrS(iRS, 2)
         End If
      'La feuille cible est désignée par son index : iC
      'Au début, Worksheets(iC) = Worksheets(2)
      With Worksheets(iC)
         .Cells(iRC, 4) = ArrS(iRS, 2)
         .Cells(iRC + 5, 4) = ArrS(iRS, 3)
         .Cells(iRC + 6, 4) = ArrS(iRS, 4)
         .Cells(iRC + 7, 4) = ArrS(iRS, 5)
         .Cells(iRC + 8, 4) = ArrS(iRS, 6)
         .Cells(iRC + 9, 4) = ArrS(iRS, 7)
      End With
      'Ensuite à chaque tour de boucle iRS s'incrémente de 1 et iRC s'incrémentera de 48
   Next
Exit Sub
GESTERR:
   MsgBox ZKMSG(vbObjectError + Err.Number, WWbC)
   If Err.Number = 13 Then
      Stop
      Resume
   End If
End Sub

Bonjour Galopin

Ouaaah tu es un fou !!!

J'ai fait un break depuis jeudi soir, car entre la chaleur, dehors, dans les transports et....la macro, j'avais la tête comme une citrouille.

Merde tu es trop gentil....j'aimerai bien te payer un café car en plus j'ai appris plus en 1 semaine qu'en 6 mois !!!! t'es trop chouette. Tu as fait plus que m'aider !

Oui comme je te l'ai dit ils m'ont donné une liste qui n'était pas à jour, j'ai tout traité jeudi et du coup je passe de 891 à 803.

0006 par exemple n'y est pas, donc je l'ai retiré pour avoir la même chose des 2 cotes , mais il y en avait plein d'autres...c'est juste le problèmes des onglets qui bloquaient. D'ailleurs je vais bien étudier ça, car j'ai testé 2 solutions mais sans résultats donc je suis pressé de voir ce que tu as fait !

Je vais tester ton code demain (ce n'est pas de mon niveau et j'espère atteindre le même d'ici quelques mois ? années plutôt...)

Tu m' fais rire en plus...la pauvre madame Galopin.

Bon, dés demain matin je me met dessus. De toute façon si ça bloque ça ne peut être que les bases...ton code est top quand je le regardais travailler tout seul, même sans tempo, ça bloquait même pas....je te dis ça demain.

Bonne soirée Galopin et encore merci...

Bonjour Galopin,

J'en suis à 500 fichiers...j'ai eu un bug car il y avait un n° de site obsolète. J'ai traité et relancé là où il a planté. J'ai regardé le dernier fichier avant plantage et il est bien rempli, donc c'est quand même une sacré bête de macro que je vais étudier tranquillement une fois terminé.

Je te dirais quand ce sera terminé.

Bonne fin de journée et merci

Bonjour,

Pour ma part, j'ai bossé sur la trame qui est absolument scatologique...

J'ai commencé par changer le logo par un logo (50 ko censé être plus "light"

En fait je n'ai rien gagné, bon... J'en ai donc déduit qu'il y a autre chose qui ne va pas !

J'ai donc suspecté l'abus de substance dangereuse pour la santé des fichiers Excel : Les autres images.

J'en ai comptées 9 dans la feuille "Synthèse, Ce qui est relativement raisonnable compte tenu qu'il y a 2 graphiques...

Par contre pour les autres feuilles 1-100 à 701-800, j'en compte 114 pour la première et 214 pour chacune de toutes autres... soit au total quelques 1700 images alors qu'à peine 700 sont nécessaires (67 x 10)

La faute aux flèches grises dont la plupart sont doublonnées à partir de la deuxième feuille et même dans la première.

Pour autant ceci corrigé il reste beaucoup à faire pour obtenir un instrument acceptable.

J'ai donc essayer d'analyser un peu la conception du document.

Je me suis fait la réflexion qu'en fait cette conception n'était pas du tout optimisée :

Personne ne peut lire les 12 onglets simultanément quand à les imprimer, ça va être un véritable casse tête,

Nombreuses formules complexes alors qu'en fait on a plutôt des données statiques.

En fait il eut sans doute été préférable de créer une base de données ou plutôt 2

une par espace audité

une par garde corps

+ un unique UserForm pour la saisie des données.

Avantage : On aurait que 2 bases de données brutes avec des données "en dur" (zéro formules)

Au bout du compte ça te ferait une BD Batiments/Espaces toujours 900 lignes...x 55 colonnes

Une base de données garde corps 900 x 5 lignes pour 55 colonnes

Et là tu aurais un classeur digne de ce nom avec des stats faciles à tirer, zéro mise en forme nécessaire (les BD ne sont pas des sapins de Noël)

Juste un UserForm un peu chiadées pour des saisies hyper contrôlées mébon ça serait surement pas plus compliqué que des saisies dans ce bousin !

Bon par contre la conception du UserForm, ça sera pas une conception à la Franquin... hein ! Pas des macros de "pédé" non plus... (expression populaire ne présumant en rien mon appréciation sur cette population !)

A part ça je ne vois rien d'autre à dire... Si ce n'est que pour la maintenance, surement plus facile que de chercher dans toutes tes feuilles...

Ah, si... J'oubliai : Juste une unique feuille pour visualiser voire imprimer une fiche espace...

Je te fiche mon billet qu'on aurait pas dépassé 2 Mo...

Bon enfin je dis ça... J'ai rien dit ... Hein !

Yena d'autres qui diraient ACCESS, PowerBi, Trans... Bon... Tu me suis ?

A+

Bonjour Galopin,

Alors c'est terminé, apparemment les données se sont bien remplies et je partage à 200 % avec toi ton analyse et elle est bien vue. Le gars s'est fait plaisir alors qu'il a oublié qu'il y avait des utilisateurs sur le terrain qui doivent remplir le document et qui n'ont pas que ça à faire ! Dans ce cadre là c'était surtout le résultat qui était important. Faire des guirlandes dans Excel on s'en fiche.

Et bien sûr que lorsque l'on commence à travailler sur des base de données importantes, il faut oublier Excel et privilégier Access (que je ne connais pas) ou d'autres logiciels, c'est ce qu'on m'a toujours dit.

Bah oui, j'aurai bien voulu changer tout cela, mais je n'ai pas la main, il aurait fallu que je sois associé dés le début sauf qu'on m'a appelé quand les pauvres gars du terrain ont râlé car c'était un boulot monstrueux pour eux. Le gars à construit tout son truc sur des analyses en réseau et les délais = pour hier ! Ah je te jure ! (il me semble qu'il y a ensuite une analyse qui se fait une seule feuille).

Je suis intéressé par ce que tu dis : "En fait il eut sans doute été préférable de créer une base de données ou plutôt 2

+ un unique UserForm pour la saisie des données"

J'ai vu qu'on pouvait faire des choses intéressantes avec des UserForm, mais bon je n'ai pas encore le niveau hein ?

En tout cas je te remercie beaucoup car tu m'as beaucoup aidé et j'ai appris pas mal de choses. Tu es un chouette gars, vraiment.

Est ce que je peux te garder comme "mentor" ? Je ne te demanderai plus jamais un truc comme ça, c'est trop énorme et tu y a passé trop de temps.

Non, j'aimerai juste te contacter de temps en temps pour des conseils, des avis si ça ne te dérange pas…

Bonne journée Galopin

Bonjour,

Pas de soucis tu reviens quand tu veux. >Tu as même mon tel...

D'ailleurs je préfère -et de loin- suivre un projet mené de bout en bout , plutôt que de rattraper des bribes de codes récupérés ici ou là et fait de bric et de broc...

C'est bien plus simple de monter un projet de A à Z que de se plier à des contraintes à dormir debout !

Fondamentalement les UserForm c'est pas trop compliqué quand on ne s'égare pas trop sur le chemin des écoliers. Ça ne sert à rien de réinventer la roue surtout quand on débute... C'est comme pour une maison : Quand les fondations sont bonnes, on ne craint pas le grand loup !

A+

Bonjour Galopin,

Merci beaucoup…

Je vais regarder un peu les userform (pas pour ce projet, celui là est terminé et comme tu dis je préfère également mener de bout en bout, là je me suis retrouvé coincé par des contraintes que j'aurais levé au départ si j'avais été associé dès le début au projet)

En tout cas merci encore...j'aime beaucoup l'informatique et la programmation en général...boooh juste des petit vbs ou batch, mais les batch ça dépanne bien sur certains trucs…

Merci et à bientôt

bonne journée

Bonjour Galopin

En fait ça n'a pas marché car il reste sur le même onglet 1-100, ça fait qu'ensuite il écrit dans le vide...Je vais essayé de voir si je trouve une méthode…

bonne journée

Enfin pas sur tous….

Bonjour,

Je vais être absent quelques jours... (au moins jusqu'à Mercredi ou Jeudi)

Peut-être jusqu'au 15 Aout ?

A+

Repose toi bien Galopin

A+

Tu en es ou ?

Salut Galopin

J'arrive de congés...ça va ?

Eh bien écoutes, c'était compliqué, il y a des endroits ou ça fonctionnait et parfois ça ne se remplissait pas. Donc ils ont rappelé le prestataire et ils lui ont donné une rallonge de 1000, tout était fait il y avait juste le passage d'un onglet à l'autre qu'il fallait régler. C'est bien payé. Bref il a pris le relais. Alors maintenant il faut voir à la fin des saisies de tous les gars qui vont visiter les résidences...puisque il va faire des stats sur l'ensemble à la fin.

Boh il doit etre aussi bon que moi en VBA car quand j'étais avec lui il tournait pas mal en rond et le fait qu'il n'utilise ni F5, ni F8, je me suis dis lui il doit se faire réaliser ses macros…Bon en tout cas je suis passer à autre chose. Je suis en train de travailler sur un userForm mais il faut que je rattappe tout le retard car personne fait ton boulot à ta place et en plus je suis secrétaire du CSE (les nouveaux CE). Quand j'aurais fait mon petit truc sur le form je te contacterai pour savoir si j'ai bien fait et bon c'est juste le début, je pense d'ici 3 semaines

bon ca va sinon?

Bonjour,

Très bien. Si tu change de sujet : ouvre un nouveau fil. Et au besoin tu me mets un petit mot en MP pour te signaler.

Car pour peu que quelqu'un d'autre mette son grain de sel, en principe je n'intervient pas. Les fils collaboratifs c'est pas trop mon truc !

A+

Rechercher des sujets similaires à "boucles ligne"