mettre des donnes dans un tableau horizontalement

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

Y

yaya73

Guest
Bonsoir,

voila j'ai un fichier excel ou toutes mes donnes sont par groupe de 5 verticalement :

Mandataire 😛ersonne1
Adresse :xxxxxx
Ville :yyy
cp :49000
Téléphone :..

Mandataire 😛ersonne2
Adresse :xxxxxx
Ville :yyy
cp :29000
Téléphone :

Mandataire 😛ersonne3
Adresse :xxxxxx
Ville :yyy
cp :75000
Téléphone :

.....

le tout sur 5000 lignes

Donc pour faire un filtre, j'aurais aimé savoir (si cela est possible bien sur) comment mettre ttes ces lignes via une macro horizontalement du style :

Mandataire : Adresse : Ville : cp : Téléphone :
personne1 xxxxxx yyy 49000 0212345678
personne2 xxxxxx yyy 29000 0212345678
personne3 xxxxxx yyy 53000 0212345678
personne4 xxxxxx yyy 75000 0212345678
......

A partir de là, je pourrais faire un tri par personne, ville ou cp.

Merci a vous
 

Pièces jointes

Re : mettre des donnes dans un tableau horizontalement

Salut,

Oui, c'est possible. Je t'ai fait que la macro prend de la feuille1 et "transpose" en feuille2.
J'ai fait ça sous 2007 (je n'ai pas 2010).

Voilà le fichier.
 

Pièces jointes

Dernière édition:
Re : mettre des donnes dans un tableau horizontalement

bonjour tous 🙂🙂
une facon de l'ecrire

Code:
 Sub es()
  Dim t(), t1(), x As Long, i As Long, y As Byte
  t = Range("c2:g" & Cells(Rows.Count, 3).End(xlUp).Row)
  ReDim t1(1 To UBound(t), 1 To 5)
  For i = 1 To UBound(t)
  x = x + 1
  For y = 1 To 5: t1(x, y) = t(i + y - 1, 1): Next y
  i = i + 5
  Next i
  [g4].Resize(x, 5) = t1
End Sub


ps pas penser au code postal qui peut demarrer a 0 & tel🙁

rajouter 2 lignes a la fin du code ci dessus

Code:
[J:J].NumberFormat = "00000"
  [K:K].NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##"
 
Dernière édition:
Re : mettre des donnes dans un tableau horizontalement

Code:
 Sub es()
  Dim t(), t1(), x As Long, i As Long, y As Byte
  t = Range("c2:g" & Cells(Rows.Count, 3).End(xlUp).Row)
  ReDim t1(1 To UBound(t), 1 To 5)
  For i = 1 To UBound(t)
  x = x + 1
  For y = 1 To 5: t1(x, y) = t(i + y - 1, 1): Next y
  i = i + 5
  Next i
  [g4].Resize(x, 5) = t1
End Sub

Salut à tous,

J'ai oublié de faire des études en informatique et je n'apprends que sur la toile.
Peux-tu me détailler ce code ? C'est du charabia pour moi là.
 
Re : mettre des donnes dans un tableau horizontalement

re,tous🙂🙂

en clair je passe par des tableaux dynamique dans le cas present 1tableau a une dimension colonne C en 5 dimensions
je definis mon tableau que je nomme t

Code:
 t = Range("c2:c" & Cells(Rows.Count, 3).End(xlUp).Row)
de c2 a la derniere ligne non vide de la colonne C c'est pourquoi le 3 dans la ligne de code
je redimensionne mon tableau

Code:
  ReDim t1(1 To UBound(t), 1 To 5)

je boucle sur mon tableau
Code:
For i = 1 To UBound(t)
je rempli mon tableau t1
Code:
For y = 1 To 5: t1(x, y) = t(i + y - 1, 1): Next y

on aurait pu ecrire la ligne ci dessus

Code:
  t1(x, 1) = t(i, 1)
   t1(x, 2) = t(i + 1, 1)
   t1(x, 3) = t(i + 2, 1)
   ect...

Code:
  i = i + 5

vu que c'est toutes les 5 lignes

Code:
 [g4].Resize(x, 5) = t1

et enfin j'ecris mon tableau en g4... t1

ce qui faut retenir je boucle pas sur des cellules avec range ou cells c'est tres long on reste dans du "virtuel"
le tableau est charge en memoire cela peut aller jusqu'a 100fois plus vite
on aurait ecrire de plein de facon differente avec redim preserve... par exemple
ou vu qu'on connais la dimension du tableau

Code:
t1(2 To 5000, 1 To 1)

regarde sur google tu tapes tableau espace vba tu vas tomber sur plein de site qui en parle

un pour moi qui est tres bien fait auteur Silky Road je nomme pas le site par respect pour le forum🙂
 
Re : mettre des donnes dans un tableau horizontalement

re ,🙂🙂
eh ben il va falloir t'interesser au variables meme demarche que le post precedent le net...

j'aurais pu ecrire
Code:
 Dim t As Variant, t1 As Variant
ou encore
Code:
 Dim t, t1
c'est pareil
declarer en variant

ou encore

Code:
Dim t() As Variant, t1() As Variant

que remarque tu!!! entre paranthese je rentre pas d'arguments on peut ce passer des para..

dans certains cas on peut ecrire
Code:
Dim t As Variant, t1() As String
cela dependre des données recuperer

dans certains cas variable declare en single mais attention!!!
 
- 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
502
Retour