Formule de transposition

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • Date de début Date de début

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 !

J

JJ1

Guest
Bonjour à tous,

Je joins un exemple commenté où je voudrais transposer horizontalement des nombres trouvés en colonne A.

Merci de votre aide pour cette formule.

Bonne journée
 

Pièces jointes

Re : Formule de transposition

Bonjour JJ1, Ternoise

Pas sûr d'avoir compris. S'il s'agit de transposer une colonne du bas vers le haut en ligne:

Code:
DerL = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
Tableau = Worksheets("Feuil1").Range("A3:A" & DerL)

For i = UBound(Tableau) To LBound(Tableau) Step -1
    Ind = UBound(Tableau) - i + 2
    Cells(1, Ind) = Tableau(i, 1)
Next

A+
 
Re : Formule de transposition

Bonjour Paf, Ternoise,

Merci de vos réponses, la transposition devrait se faire uniquement pour les nombres suivant les 3 nombres jaunes dans la colonne A comme dans l'exemple.
merci
a+
 
Re : Formule de transposition

Re,

cette fois j'ai compris, c'est plus que de la transposition !

Code:
Dim DerA, DerB, TableauA, TableauB, i, j, MaCol
DerA = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
DerB = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row

TableauA = Worksheets("Feuil1").Range("A3:A" & DerA)
TableauB = Worksheets("Feuil1").Range("B4:B" & DerB)

For i = LBound(TableauB) To UBound(TableauB)
    MaCol = 3
    For j = UBound(TableauA) To LBound(TableauA) Step -1
        If TableauA(j, 1) = TableauB(i, 1) Then
            Cells(i + 3, MaCol) = TableauA(j - 1, 1)
            MaCol = MaCol + 1
        End If
    Next j
Next i

A+
 
Re : Formule de transposition

Bonjour JJ1,

Une formule matricielle (à valider par Ctrl+Maj+Entrée) en C4 à tirer vers la droite et vers le bas:
Code:
=SI(COLONNES($C$1:C1)>NB.SI($A$3:$A$29;$B4);"";INDEX($A$3:$A$29;GRANDE.VALEUR(SI($A$3:$A$29=$B4;LIGNE($A$2:$A$28)-LIGNE($A$3)+1;"");COLONNES($A:A))))
 

Pièces jointes

Re : Formule de transposition

Bonjour,

Une piste avec une fonction personnalisée
Code:
Function Transpose_pmo(Plage_Data As Range, Base As Variant) As Variant
Dim var
Dim i&
Dim cpt&
Dim T()
'---
var = Plage_Data
For i& = UBound(var, 1) To 2 Step -1
  If var(i&, 1) = Base Then
    cpt& = cpt& + 1
    ReDim Preserve T(1 To 1, 1 To cpt&)
    T(1, cpt&) = var(i& - 1, 1)
  End If
Next i&
If cpt& > 0 Then Transpose_pmo = T
End Function

Le premier argument Plage_Data demande de lui fournir un paramètre Range (dans votre exemple A3:A29).
Le second argument Base est un variant. On peut lui passé comme paramètre :
1) un Range =Transpose_pmo(A3:A29;B4)
2) une valeur =Transpose_pmo(A3:A29;10)
3) une expression =Transpose_pmo(A3:A29;35+20)

La formule est à entériner sous forme matricielle sinon seul le premier résultat sera affiché.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
168
Réponses
19
Affichages
762
Retour