XL 2019 URGENT COVID 19 - Macro Transpose

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

Ternoise

XLDnaute Occasionnel
Bonjour à tous
Afin de contacter mes patients rapidement, j'ai besoin d'une macro pouvant faire ceci :
Transposer toutes les 4 lignes dans 4 colonnes différentes

A1 : Nom
A2 : Adresse
A3 : VILLE
A4 : Tel
A5 : Nom
A6 : Adresse
A7 : VILLE
A8 : Tel

etc jusqu'a 11 000 lignes

Transposer dans une nouvelle feuille

Colonne A : les noms
Colonne B : les adresses
Colonne C : les villes
Colonne D : les Tel

Merci de votre aide
David
 
Bonjour le fil, Ternoise

Ce qui est urgent, c'est que tu relises la charte du forum, camarade!
😉
La charte n'a pas dit (mais c'est écrit dedans) à dit:
2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai. Les mots URGENT, SOS, AU SECOURS sont donc à bannir.
 
Re, Bonjour Job75

COVID-19 ou pas, Excel ne sera pas d'un grand renfort.
Le message#1 parlait d'une macro
En voici une "bricolée" non dans l'urgence mais dans le désœuvrement (pour cause de confinement)
VB:
Sub Transpose()
Dim c As Range, rng As Range
Set rng = [A1].CurrentRegion.Columns(1)
For Each c In rng.Cells
If c.Row Mod 4 = 1 Then
Feuil2.Cells(Rows.Count, 1).End(3)(2).Resize(, 4) = Application.Transpose(c.Resize(4).Value)
End If
Next
End Sub
PS: je sais que c'est plus rapide avec un Array, mais je laisse cela aux urgentistes d'XLD.
😉

EDITION: Bonjour mapomme (je ne t'avais pas vu passé)
 
Re

Une autre pour la route 😉
VB:
Sub Transpose_bis()
Dim i&, j&, f As Worksheet: Set f = Sheets("Feuil2")
With Application
  .ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 1).End(3).Row - 3 Step 4
    j = j + 1: f.Cells(j, 1).Resize(, 4) = .Transpose(Range("A" & i).Resize(4))
    Next i
End With
f.Columns("A:D").AutoFit
End Sub

PS: Normalement , Ternoise n'en a plus besoin.
Il doit être au tél pour contacter ces 2750 patients
😉


EDITION: Bonjour jmfmarques
 
Dernière édition:
Bonjour mapomme, GALOUGALOU,

Ma formule du post #3 est tellement simple qu'il faut l'utiliser même en VBA :
VB:
Private Sub Worksheet_Activate()
With [A2].Resize(Application.Ceiling(Application.CountA(Sheets("Liste").Columns(1)), 4) / 4, 4)
    .Formula = "=INDEX(Liste!$A:$A,COLUMN()+4*(ROW()-2))"
    .Value = .Value 'supprime les formules
End With
End Sub
Elle se déclenche quand on active la 2ème feuille du fichier joint.

A+
 

Pièces jointes

Bonjour à tous
C'est vrai, que le confinement conduit à l'ennui et qu'on ne sait plus quoi inventer, y compris ce qu'il y a de plus fou.
Allez -->> une méthode que je ne conseillerais pas (même à mon ennemi le konard_virus), mais qui a le mérite d'amuser --->>
VB:
Set toto = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
Set titi = Range("A1:D" & toto.Count / 4)
For k = 1 To toto.Count
  titi(k) = toto(k)
  If k > 1 Then toto(k) = ""
Next
 
- 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
3
Affichages
490
Réponses
10
Affichages
530
Réponses
10
Affichages
783
Réponses
4
Affichages
1 K
Retour