VBA - transformer des colonnes en lignes

jcf

XLDnaute Nouveau
bonjour tout le monde,

J'ai besoin de vos conseils pour une macro (je débute).
J'ai un fichier Excel avec plusieurs colonnes :

ogu68.png


J'aimerai créer une nouvelle ligne pour chaque tranches de SDA (SDA_debut -> SDA_fin) en gardant les infos "code_site", "caisse", "NDI_ref_facturation".

Pour avoir le résultat ci-dessous :

99I2G.png


Vous avez des conseils ? une idée du déroulement du script ? des fonctions qui pourraient m'aider ?

Merci d'avance ! :)
 

lantuan

XLDnaute Nouveau
Re : VBA - transformer des colonnes en lignes

Ok, BrunoM45, tu m'as eu !
Cependant, j ai relu la chartre du forum, et rien ne stipule que l'on ne peut pas poster sur un autre forum.
Alors peut etre que cela fait partie des habitudes sur les forums ? je ne sais pas. Tous les demandeurs ne connaissent pas les us et coutumes d’XLD.
J'ai vraiment besoin d'aide sur ce coup, c'est pour une asso, ca aiderait bcp de gens :D
Merci
 

lapluchouet

XLDnaute Nouveau
Re : VBA - transformer des colonnes en lignes

Bonjour à tous, j'ai un souci similaire à la personne qui a ouvert cette discussion et je n'arrive pas à modifier ma macro comme il se doit. Je débute en langage vba et patauge un peu :

J'ai le fichier suivant :

743 marque 1 marque 2 marque 3
877 marque 1 marque 2 marque 3 marque 4
1110 marque 1 marque 2
1123 marque 1 marque 2 marque 3

et je voudrais :

743 marque 1
743 marque 2
743 marque 3
877 marque 1
877 marque 2
877 marque 3
877 marque 4
etc.

Je joins à mon message un exemple du fichier que je veux.

Je vous remercie d'avance pour votre aide...

Aude
 

Pièces jointes

  • Problem_macro.xlsx
    9.4 KB · Affichages: 74

job75

XLDnaute Barbatruc
Re : VBA - transformer des colonnes en lignes

Bonjour Aude lapluchouet, bienvenue sur XLD,

C'est tout à fait en rapport avec ce fil, en plus simple :

Code:
Sub Regrouper()
Dim lig&, lig1&, col%
Application.ScreenUpdating = False
For lig = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
  lig1 = lig + 1
  col = 3
  While Cells(lig, col) <> ""
    Rows(lig1).Insert
    Cells(lig1, 1) = Cells(lig, 1)
    Cells(lig1, 2) = Cells(lig, col)
    lig1 = lig1 + 1
    col = col + 1
  Wend
Next
[C:C].Resize(, Columns.Count - 2).ClearContents
End Sub
Votre fichier complété.

A+
 

Pièces jointes

  • Problem_macro(1).xls
    48 KB · Affichages: 170

job75

XLDnaute Barbatruc
Re : VBA - transformer des colonnes en lignes

Re,

Sur un grand tableau cette macro sera beaucoup plus rapide :

Code:
Sub Regrouper()
Dim tablo, i&, j%, n&, t()
With ActiveSheet.UsedRange
  If .Count = 1 Then Exit Sub 'sécurité
  tablo = .Resize(, .Columns.Count + 1)
End With
ReDim t(Application.CountA([B:B].Resize(, Columns.Count - 1)), 1)
For i = 2 To UBound(tablo)
  j = 2
  While tablo(i, j) <> ""
    t(n, 0) = tablo(i, 1)
    t(n, 1) = tablo(i, j)
    j = j + 1
    n = n + 1
  Wend
Next
If n Then [A2].Resize(n, 2) = t
[C:C].Resize(, Columns.Count - 2).ClearContents
End Sub
En effet elle utilise des tableaux VBA (matrices).

Fichier (2).

A+
 

Pièces jointes

  • Problem_macro(2).xls
    49 KB · Affichages: 132
  • Problem_macro(2).xls
    49 KB · Affichages: 90
  • Problem_macro(2).xls
    49 KB · Affichages: 117
Dernière édition:

BRUNO62

XLDnaute Occasionnel
Re : VBA - transformer des colonnes en lignes

Bonjour à tous,

J'ai repris ce fil très intéressant.
Par contre, je rencontre un problème quand certaines colonnes ne sont pas remplies.
Avez vous une idée.
Merci, d'avance.
A+
 

Pièces jointes

  • SDA_macro_test(1) ..xls
    36.5 KB · Affichages: 49

BRUNO62

XLDnaute Occasionnel
Re : VBA - transformer des colonnes en lignes

Bonjour à tous,
J'ai repris le fil mjo*06/12/2006*11h49#2 pour supprimer les cellules vides des différentes colonnes.
Re : Supprimer des cellules vides en décalant certaines lignes vers la gauche et cela fonctionne très bien.
Encore, merci.

[URL="http://http://www.excel-downloads.com/forum/71606-supprimer-des-cellules-vides-en-decalant-certaines-lignes-vers-la-gauche.html#post381919[/URL]

Bonne soirée
A+
 

RomeoLF

XLDnaute Nouveau
Re : VBA - transformer des colonnes en lignes

Bonjour à tous,
Merci à tous pour ce fil qui est très intéressant.
J'ai essayé de retravailler la première macro de Job75 pour mon fichier mais sans succès.
J'ai un fichier avec des données comptable, avec des valeurs pour chaque compte allant de la colonne F à S.

J'aimerai, grâce à une macro (sur la base de ce fil), récupérer chaque numéro compte, en l'insérant dans une colonne (F), et à côté mettre la valeur qui correspond et cela pour chaque ligne.

J'espère que vous me comprendrez.

Merci d'avance à tous ceux qui pourront m'aider.
 

Pièces jointes

  • Test IBP.xlsx
    30.6 KB · Affichages: 40

Discussions similaires

Réponses
16
Affichages
553
Réponses
9
Affichages
219

Statistiques des forums

Discussions
312 500
Messages
2 089 013
Membres
104 004
dernier inscrit
mista