Liste d'éléments a copier d'une feuille sur l'autre afin de les exploiter

marido

XLDnaute Junior
Bonjour,

Votre aide sera la bienvenue, car après plusieurs tentatives, le test n'est pas concluant :-(
J'ai besoin de travailler à partir d'une liste d'éléments (Col Metric Name - provenant de l'onglet Data) qui est variable d'un mois sur l'autre.
L'objectif étant de mettre ensuite en évidence les évolutions

Onglet "Data" : des données qui viennent d'un autre fichier et dont je fais préalablement un copy / paste
Pour la col J de l'onglet Data, j'ai fait une petite macro afin de recuperer cette liste d'éléments et la copier dans la feuille Evolution.... et pouvoir ainsi, travailler sur
les évolutions mois par mois

Mon problème : lorsque j'actionne la macro de l'onglet EVOLUTION (bouton "update" a gauche), je me retrouve avec des #REF! dans mes commandes
J'ai déjà modifié la macro initiale pour copier ma liste dans un onglet "Temp" (au lieu de le copier directement dans l'onglet "Evolution").... mais ca n'a pas résolu le pb

Je dois mal m'y prendre....

MD
 

Pièces jointes

  • Dashboard V2 - test.xlsm
    60.4 KB · Affichages: 16

youky(BJ)

XLDnaute Barbatruc
Bonjour MD,
Voici avec la méthode dictionary
Plus besoin de l'onglet <Tem>
Bruno
VB:
Sub Extraction_doublon()
Application.Calculation = xlCalculationManual
Sheets("EVOLUTION").[B3:B5000].ClearContents'efface
With Sheets("DATA")
Set dico = CreateObject("Scripting.Dictionary")
For Each c In .Range(.[J2], .[J65000].End(xlUp))
dico.Item(c.Value) = dico.Item(c.Value)
Next c
Sheets("EVOLUTION").[B3].Resize(dico.Count, 1) = Application.Transpose(dico.keys)
End With
Application.Calculation = xlCalculationAutomatic
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Hello,
Ici aussi faut mettre B6 au lieu B3
Sheets("EVOLUTION").[B3].Resize(dico.Count, 1) = Application.Transpose(dico.keys)

Les formules Sommeprod occupe beaucoup de place et ralentisse le fichier il serait bon de faire en macro
Bruno​
 

marido

XLDnaute Junior
Merci pour la mise a jour (qui fonctionne parfaitement)
Je pensais que c'était la macro qui ralentissait le fichier et pas les formules Sommeprod….
Je ne sais pas encore remplacer les formules par une macro, et comme je vais devoir travailler sur l'évolution sur 12 mois, ca risque de devenir urgent !
Si conseils, je prends et dans tous les cas merci pour le support efficace
MD
 

marido

XLDnaute Junior
Merci !!! ca va tellement vite que j'étais….. en attente du démarrage…..
Je suis en train de regarder, essayer de comprendre et l'adapter

J'ai un peu de mal au démarrage avec ces 2 lignes, si tu peux m'aider à saisir :
For k = 6 To [B65000].End(3).Row
metric = Cells(k, 2)
For lg = 2 To .[A65000].End(3).Row

La seconde partie me semble plus facile à comprendre avec la boucle if (emplacement des données a sélectionner selon critère et cible)
Merci encore
MD
 

youky(BJ)

XLDnaute Barbatruc
Salut,
[B65000].end(3).row >>>> renvoie la derniére ligne de la colonne B...... ca c'est pour EVOLUTION
donc k dans la boucle est le N° ligne de 6 à la dernière ligne d'évolution
metric est une variable =cells(k,2) est =cells(k est ligne , 2 est col B)
Remarque le point avant
.[A65000].End(3).Row cela indique que c'est avec le With(onglet DATA)
Fait cet essai
en vba >menu affichage>Fenêtre exécution> dans la fenêtre on peut le questionner
Quand on veux savoir on mets un point d'interrogation ?
Donc exemple
?
[B65000].End(3).Row 'va envoyer le N° de la dernière ligne de col B
Si tu mets un point d'arrêt dans la maro (1 click dans la marge gauche, 1 point rouge se fait)
(1 autre click pour l'enlever)
Mets un point d'arrêt à la ligne >>> If .Cells(lg, 10) = metric Then
Exécute la macro, elle s'arrête sur le point, passe le curseur sur metric pour voir
ou en fenêtre exécution écris ?metric et Enter ou ?k ou ?lg
Tu appuie sur F8 pour continuer ligne par ligne ou par le menu>débocage>pas à pas
Ben voila pas mal d'explications
Bruno
 

marido

XLDnaute Junior
Explications très claires merci. J'ai encore 2 questions (désolée)
-En commentaire (Evolution), tu indiques MFC jusqu'a ligne 500 "MFC jusqu'a ligne 500" => que signifie MFC stp
-Je viens de recevoir une mise a jour de l'onglet DATA (plus de lignes) et j'ai fait un cpy/paste pour relancer la mécanique.
La macro fait bien un refresh de la col Metric name ds Evolution, mais les chiffres n'apparaissent plus ds le tableau. Y a t'il une limitation ?
Merci
MD
 

youky(BJ)

XLDnaute Barbatruc
MFC =Mise en Forme Conditionelle
La macro est prévu pour 65000 lignes (on peut facilement faire plus si besoin)
Je pense que le problème viens que les entêtes de colonnes ne sont pas identiques ou sont décalées en DATA
Bruno
 

marido

XLDnaute Junior
Après investigations : les noms (exemple cerise, ….) peuvent contenir des traits d'union (exemple cerise - France) et je pense que c'est la raison pour laquelle le tableau était vide de chiffres.
Si c'est une piste, ce qui est étrange c'est que la macro update la liste de Métriques malgré le "-" , et donc le nom, qu'elle ne semble pas reconnaitre, sans toutefois mettre à jour le tableau.

Egalement, lors de mes nombreux tests, j'ai modifié un nom pour n'avoir qu'une ligne de ce nom et la liste des métriques aurait donc du tenir en une seule ligne, mais elle a été plus longue que cela

Affaire a suivre et bonne soirée
MD
 

youky(BJ)

XLDnaute Barbatruc
Hello,
Voici qui va convenir dans tous les cas
Avec un formulaire > on choisit dans la liste qui est sans doublon
Si tu as Cerise et Cerises avec un "s" tu auras les 2 choix
Egalement pour les dates
Bruno
 

Pièces jointes

  • Dashboard V4 - test.xlsm
    52.1 KB · Affichages: 7

marido

XLDnaute Junior
Bonjour et un grand merci pour cette nouvelle mise a jour, en plus j'apprends !!

Est-il nécessaire de passer par un formulaire intermédiaire (mon soucis venant visiblement plus du "-" non reconnu que de doublons dans la liste de noms et j'aimais bien le design de la V3

Peux tu me dire comment je visualise le code (en passant Developer => Macro, j'accède à formulaire, mais pas à UserForm

MD
 

youky(BJ)

XLDnaute Barbatruc
En menu Développeur>Visual Basic>
Si aucune fenêtre aller en Menu>affichage>Projet
Doubleclick sur +Feuille
Doubleclick sur UserForm1
Doubleclick sur le bouton Valider de l'userform
Bon si tu préfère la V3 je peux faire avec (like) ou (left)
Par contre si tu as Courge et Courgette la macro prend les 2.
C'est mieux avec l'user
Bruno
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33