Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bloublou

XLDnaute Occasionnel
Bonjour à tous,

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

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

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:
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') 😀

Bonne soirée

BlouBlou
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

E
Réponses
12
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…