Macro VBA Transpose colonnes en lignes avec calcule de répartition

bloublou

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin de votre expertise sur les macros sur un sujet épineux :confused:

A partir du fichier joint je souhaiterais calculer une répartition par pays en fonction d'un montant global
La problématique c'est que je dois avoir 30 pays en colonnes et j'aimerais transposer ces pays en lignes

Exemple = montant à repartir 65000 ; Russie = 0.2
ligne Russie = 65000x0.2 = 13000, toutes les informations se trouvant sur la ligne doit être répétées si possible
avant j'avais une ligne avec 5/6 colonnes pour chaque pays, apres j'aimerais trouver 1 ligne par pays avec le calcul de la répartition de fait

J'ai mis une PJ pour faciliter la compréhension ;)

Merci beaucoup
BlouBlou
 

Pièces jointes

  • exemple repartition.xlsx
    20.9 KB · Affichages: 40

Paritec

XLDnaute Barbatruc
Re : Macro VBA Transpose colonnes en lignes avec calcule de répartition

Bonjour Bloublou le forum
ton fichier en retour tu ouvres tu cliques sur le bouton traiter et tu me redis
a+
Papou:)
 

Pièces jointes

  • BlouBlou V1.xlsm
    46.7 KB · Affichages: 43
  • BlouBlou V1.xlsm
    46.7 KB · Affichages: 52

Marc L

XLDnaute Occasionnel
Bonjour ! Une autre approche, résultat en "Feuil2" :

VB:
Sub Demo()
     Const FM = "IF(F#:AI#>0,F#:AI#*E#)", FP = "IF(F#:AI#>0,F1:AI1)"
     Application.ScreenUpdating = False
     Feuil2.UsedRange.Clear
     Feuil2.Cells(6).Value = "Pays"
With Feuil1.Cells(1).CurrentRegion.Rows
     Feuil2.[A1:E1].Value = .Range("A1:E1").Value
     Feuil2.[G1:X1].Value = .Range("AJ1:BA1").Value
        R& = 2
    For L& = 2 To .Count
        VA = Filter(.Parent.Evaluate(Replace(FM, "#", L)), False, False)
        N& = UBound(VA) + 1
        Feuil2.Cells(R, 1).Resize(N, 4).Value = .Item(L).Range("A1:D1").Value
        Feuil2.Cells(R, 5).Resize(N, 2).FormulaLocal = Application.Transpose(Array(VA, _
                   Filter(.Parent.Evaluate(Replace(FP, "#", L)), False, False)))
        Feuil2.Cells(R, 7).Resize(N, 18).Value = .Item(L).Range("AJ1:BA1").Value
        R = R + N
    Next
End With
     Application.Goto Feuil2.Cells(1), True
     Application.ScreenUpdating = True
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, …
 
Dernière édition:

bloublou

XLDnaute Occasionnel
Re : Macro VBA Transpose colonnes en lignes avec calcule de répartition

Bonsoir le forum, Paritec, Marc L, laetitia90
Désole pour la réponse tardive
J'ai essayé vos solutions et c'est vraiment top ca marche

Merci à tous de votre aide (comme d'hab') :D

Bonne soirée

BlouBlou
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG