Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

hellocarioca

XLDnaute Occasionnel
Bonjour Forum,

Je vous ai mis un fichier en exemple.

il faudrait que les éléments de ma liste (combo box pas obligatoire) soient sélectionnés automatiquement un à un et que les résultats soient sauvés un par un dans l'onglet "historique".
j'aimerai éviter de devoir sélectionner chaque item, de copier le résultat et de le coller manuellement dans l'onglet "historique".

Je tiens à préciser que le fichier que je vous envoie est une simplification de mon fichier actuel et que le résultat que je cherche à copier est beaucoup plus complex que celui mentionné.

J'espère que vous pourrez m'aider. Je m'excuse d'avance si mon explication n'est pas très claire. n'hésitez pas à m'en demander plus :)

Merci forum :)
Maud
 

Pièces jointes

  • Expl.xls
    18.5 KB · Affichages: 81
  • Expl.xls
    18.5 KB · Affichages: 83
  • Expl.xls
    18.5 KB · Affichages: 100

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Bonjour PierreJean,

Merci beaucoup pour votre aide! c'est pratiquement ça sauf que j'aurai aimé que la macro fasse automatiquement défiler les différents noms de la liste.

La macro prendrait le 1er nom de la liste, lui ferait faire le calcul, copier et coller sur l'autre onglet,
puis 2ème nom de la liste, calcul, copier et coller sur autre onlget,
puis 3ème nom de la liste, calcul, copier et coller sur autre onglet,
et... jusqu'au bout de la liste (qui pourrait varier d'une semaine à une autre).

Merci beaucoup de passer du temps là dessus.

très cordialement,

Maud
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

ça m'a l'air parfait, par contre est ce que je pourrais juste avoir une explication du code

Sub report()
Set debut = Range("O2") 'cellule origine du tableau 1
ecart_tableau = 8 'nombre de lignes entre le tableau 1 et le tableau 2
dercol = Cells(debut.Row, 256).End(xlToLeft).Column
derlin = debut.End(xlDown).Row
lecr = 5
colecr = 2
For n = debut.Row To derlin
For m = debut.Column To dercol
If m = debut.Column Then
Sheets("Historique").Cells(lecr, colecr) = Cells(n, m)
Else
Sheets("Historique").Cells(lecr, colecr) = Cells(n, m) + Cells(n + ecart_tableau, m)
End If
colecr = colecr + 1
Next m
colecr = 2
lecr = lecr + 1
Next n
End Sub


Parce que je ne comprends pas tout :)

merci Beaucoup PierreJean
Maud
 

pierrejean

XLDnaute Barbatruc
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Re

Voila avec un peu + de commentaires
ne pas hesiter a revenir si pas suffisament clair

Code:
Sub report()
Set debut = Range("O2") 'cellule origine du tableau 1
ecart_tableau = 8 'nombre de lignes entre le tableau 1 et le tableau 2
'les 2 lignes precedentes permettent de modifier la place des tableaux d'origine
dercol = Cells(debut.Row, 256).End(xlToLeft).Column 'numero de la derniere colonne remplie sur la ligne de la cellule d'origine
derlin = debut.End(xlDown).Row 'derniere ligne remplie sous la cellule d'origine
'les 2 lignes precedentes permettent l'extension du 1er tableau d'origine
lecr = 5 ' ligne de debut d'ecriture
colecr = 2 'colonne de debut d'ecriture
'les 2 lignes precedentes permettent de definir la palce du tanleau de sortie
'les 2 boucles imbriquées permettent de parcourir le 1er tableau
For n = debut.Row To derlin
  For m = debut.Column To dercol
    'si l'on est sur la colonne de debut
    If m = debut.Column Then
    'inscrire en feuille Historique les noms
      Sheets("Historique").Cells(lecr, colecr) = Cells(n, m)
    Else
    'sinon inscrire la somme des 2 tableaux
      Sheets("Historique").Cells(lecr, colecr) = Cells(n, m) + Cells(n + ecart_tableau, m)
    End If
    'incrementer la colonne d'ecriture
    colecr = colecr + 1
  Next m
  'revenir a la colonne de debut d'ecriture
  colecr = 2
  'incrementer la ligne d'ecriture
  lecr = lecr + 1
Next n
End Sub
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Bonjour et merci pour les explications.

mon problème c'est que le résultat que je veux copier et coller pour chaque element proviens d'un calcul plus compliqué (n'est pas la somme des 2 tableaux). C'est en fait une ligne sur le fichier type "Data" mais ligne 91. Du coup la ligne de code Sheets("Historique").Cells(lecr, colecr) = Cells(n, m) + Cells(n + ecart_tableau, m)
Ne correspond pas.
Du coup comment devrais-je m'y prendre pour que la macro copie pour chaque element de la liste la ligne 91 qui va de la colonne C à la colonne BC?

Merci encore
Maud
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Alors mon problème c'est que j'ai du mal à le simplifier alors j'ai mis un exemple et en gros c'est le même principe.
Il faudrait que tous les éléments de la liste est leur ligne "results" (dans exemple ligne 13 et dans fichier mère ligne 91), sauvé dans un autre onglet.

C'est peut être plus simplement expliqué comme ça. Désolée pour la confusion :(

Encore merci
Maud
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Bonjour PierreJean,

je sais que j'ai un peu abusé de votre gentillesse mais j'espère que j'aurai de vos nouvelles demain et que vous allez pouvoir m'aider.

Bonne soirée
maud
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Bonjour PierreJean,

Je vous ai remis l'exemple avec un peu plus d'explications en espérant que ça vous aidera à mieux comprendre.

Merci encore pour votre aide
Maud
 

Pièces jointes

  • Expl2.xls
    34.5 KB · Affichages: 71
  • Expl2.xls
    34.5 KB · Affichages: 84
  • Expl2.xls
    34.5 KB · Affichages: 78

pierrejean

XLDnaute Barbatruc
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

Re

macro a tester

Code:
Sub test()
For Each cell In Range("Name")
 Sheets("Cover").Range("C2") = cell.Value
 Sheets("Cover").Calculate
 x = Sheets("Results").Range("B65536").End(xlUp).Row + 1
 Sheets("Results").Range("B" & x) = cell.Value
 shetts("Cover").Range(Cells([COLOR=blue]13[/COLOR], 3), Cells(13, Sheets("Cover").Cells([COLOR=blue]13[/COLOR], 256).End(xlToLeft).Column)).Copy Destination:=Sheets("Results").Range("C" & x)
Next
End Sub

toujours dans l'espoir (assez faible) d'avoir compris et sans avoir pu essayer
Eventuellement adapter le numero de la ligne a reporter (13)
 

hellocarioca

XLDnaute Occasionnel
Re : Macro: Faire "analyser" automatiquement tous les elements d'une drop-down list

PierreJean c'est merveilleux ça marche, c'est exactement ce que je voulais :) :)
Par contre est ce qu'il serait possible d'avoir un copy as value à la fin pour eviter qu'il me copie les formules? (partie en rouge)
shetts("Cover").Range(Cells(13, 3), Cells(13, Sheets("Cover").Cells(13, 256).End(xlToLeft).Column)).Copy Destination:=Sheets("Results").Range("C" & x)

Encore un grand merci pour votre aide.
Maud
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 010
Membres
104 004
dernier inscrit
mista