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

XL 2010 Transposition

  • Initiateur de la discussion Initiateur de la discussion bobafric
  • 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 !

bobafric

XLDnaute Occasionnel
Salut à tous
Dans la colonne 1 je voudrai créer une macro pour transposé 2 lignes à la fois
dans l'exemple ci-joint :les cellules A2 A3 dans B1 C1
A5 A6 dans B4 C4

J'espère être clair et merci d'avance
 

Pièces jointes

Solution
Bonjour Bobafric, Efgé,
un essai en PJ avec :
VB:
Sub Transposition()
    Dim DL%, L%
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    Range("B1:C" & DL).ClearContents
    For L = 1 To DL Step 3
        Cells(L, "B") = Cells(L + 1, "A")
        Cells(L, "C") = Cells(L + 2, "A")
    Next L
End Sub
Bonjour

Je ne comprend pas le principe:
En $B$1:$C$1 on copie $A$2:$B$2 (donc en face du chiffre en colonne A), et ensuite on copie les lettres en face de la première lettre de la colonne A 🤔

En formule pour copier les lettres en face des chiffres (a mettre en $B$1 et à tirer vers le bas et jusqu'a la colonne C)
VB:
=SI(ESTNUM($A1);DECALER($A1;COLONNES($A:A););"")

Cordialement
 
Bonjour Bobafric, Efgé,
un essai en PJ avec :
VB:
Sub Transposition()
    Dim DL%, L%
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    Range("B1:C" & DL).ClearContents
    For L = 1 To DL Step 3
        Cells(L, "B") = Cells(L + 1, "A")
        Cells(L, "C") = Cells(L + 2, "A")
    Next L
End Sub
 

Pièces jointes

@Efgé,
Si Bobafric ne peut pas écrire cette macro, c'est qu'il n'est pas trop à l'aise en VBA.
Or à mes yeux, Cells(L + 1, "A") est plus "lisible" dans sa compréhension que Cells(L + 1, 1).
C'est tout. De plus cela n'impacte pas le temps d'exécution.
 
Re
De plus cela n'impacte pas le temps d'exécution.
Chez moi :
VB:
Sub TestAlphaNum()
Dim T!
Dim i&, x&
T = Timer
For i = 1 To 10000000
    x = Cells(Rows.Count, 1).End(xlUp).Row
Next i
Debug.Print Timer - T
End Sub
36,41016 secondes
Code:
Sub TestAlphaNum()
Dim T!
Dim i&, x&
T = Timer
For i = 1 To 10000000
    x = Cells(Rows.Count, "A").End(xlUp).Row
Next i
Debug.Print Timer - T
End Sub
43,62109 secondes.

Choisi ton camps camarade...
Cordialement
 
Choisi ton camps camarade...
Tout dépend de ses priorités. 🙂
Pour une liste de 1000 éléments, plus proche d'une réalité, on perd 0.72ms.
Et j'ai toujours privilégié la lisibilité, la compréhension et la maintenabilité par n'importe qui. Ce qui, au boulot, m'a évité plein de demandes d'éclaircissements. 😉
 
- 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

Réponses
11
Affichages
250
Réponses
3
Affichages
357
Réponses
3
Affichages
303
Réponses
13
Affichages
748
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…