Synthétiser résultat issue d'une liste déroulante

quateain

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous aujourd'hui car j'ai un petit problème sur excel. En effet, j'ai un tableau qui varie en fonction d'une liste déroulante. J'ai donc une valeur différente à chaque nouvelle valeur saisie. J'aimerais sur une autre feuille avoir toutes ces valeurs sous forme d'un tableau de synthèse en simulant toutes les valeurs en même temps. Cela nécessite sûrement une macro mais je ne sais pas comment m'y prendre car je suis une bille à ce niveau là et c'est pour cela que je sollicite votre aide.

Merci d'avance.
 
Dernière édition:

quateain

XLDnaute Nouveau
Bonjour Quateain, bonjour le forum,

Le fichier ! Le fichier ! criait la foule en délire...
Bonjour Robert,

Voilà le fichier (pour des raisons de confidentialité j'ai du enlever les valeurs)

Ce fichier me sers à calculer ma marge commerciale sur mes produits. Pour ce faire j'ai plusieurs lots en A2 avec la liste déroulante et excel me sort en A46 jusqu'à I46 les valeurs que j'ai besoin. J'aimerais, sur une nouvelle page avoir la synthèse de tous mes numéros en A2 avec leurs valeurs correspondantes

Bonne journée
 

Pièces jointes

  • MCo03 test.xlsx
    35.4 KB · Affichages: 16

Robert

XLDnaute Barbatruc
Repose en paix
Re,

J'ai rajouté un onglet à ton fichier que j'ai nommé Synthèse. Puis le code ci-dessous. Ça marche mais ça me paraît peu fufut. Il doit certainement y avoir mieux avec les formules magiques ou un code mieux pensé.

VB:
Sub Macro1()
Dim M As Worksheet 'déclare la variable M (onglet MATRICE_ventesV3)
Dim L As Worksheet 'déclare la variable L (onglet de la Liste, Feuil2)
Dim S As Worksheet 'déclare la variable S (onglet Synthèse)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set M = Worksheets("MATRICE_ventesV3") 'définit l'onglet M
Set L = Worksheets("Feuil2") 'définit l'onglet L
Set S = Worksheets("Synthèse") 'définit l'onglet S
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
S.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface d'éventuelles anciennes valeurs de l'onglet S
For Each CEL In L.Range("A2:A" & L.Cells(Application.Rows.Count, "A").End(xlUp).Row) 'boucle sur toutes les cellules CEL de la plage A2 à A...(fin) de l'onglet L
    M.Range("A2").Value = CEL.Value 'renvoie la valeur de CEL dans la cellule A2 de l'onglet M
    Set DEST = S.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (premiere cellule vide de la colonne A de l'onglet S
    M.Range("A46:I46").Copy 'copie la plage A46:I46 de l'onglet M
    DEST.PasteSpecial (xlPasteValues) 'colle les valeurs dans DEST de l'onglet S
Next CEL 'prochaine cellule de la boucle
S.Activate 'active l'onglet S
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 

quateain

XLDnaute Nouveau
Re,

J'ai rajouté un onglet à ton fichier que j'ai nommé Synthèse. Puis le code ci-dessous. Ça marche mais ça me paraît peu fufut. Il doit certainement y avoir mieux avec les formules magiques ou un code mieux pensé.

VB:
Sub Macro1()
Dim M As Worksheet 'déclare la variable M (onglet MATRICE_ventesV3)
Dim L As Worksheet 'déclare la variable L (onglet de la Liste, Feuil2)
Dim S As Worksheet 'déclare la variable S (onglet Synthèse)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set M = Worksheets("MATRICE_ventesV3") 'définit l'onglet M
Set L = Worksheets("Feuil2") 'définit l'onglet L
Set S = Worksheets("Synthèse") 'définit l'onglet S
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
S.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface d'éventuelles anciennes valeurs de l'onglet S
For Each CEL In L.Range("A2:A" & L.Cells(Application.Rows.Count, "A").End(xlUp).Row) 'boucle sur toutes les cellules CEL de la plage A2 à A...(fin) de l'onglet L
    M.Range("A2").Value = CEL.Value 'renvoie la valeur de CEL dans la cellule A2 de l'onglet M
    Set DEST = S.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (premiere cellule vide de la colonne A de l'onglet S
    M.Range("A46:I46").Copy 'copie la plage A46:I46 de l'onglet M
    DEST.PasteSpecial (xlPasteValues) 'colle les valeurs dans DEST de l'onglet S
Next CEL 'prochaine cellule de la boucle
S.Activate 'active l'onglet S
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
Re,

En tout cas ça fonctionne, merci beaucoup c'est exactement ce qu'il me fallait !
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 110
Membres
112 662
dernier inscrit
lou75