En VBA, extraire d'un tableau des cellules côte à côte pour les mettre les unes sous les autres dans une seule colonne

Le
G. L
Bonsoir à vous tous,

Un sujet que je n'arrive pas à résoudre, comment feriez vous SVP ? :
En VBA, extraire d'un tableau des cellules côte à côte pour les mettre les
unes sous les autres dans une seule colonne



Exemple :

Dans un tableau de plusieurs colonnes et environ 12 clefs différentes de 1 à
10 lignes :

Sujet Page Clef Ligne Texte

Ouf page 15 225971 1 Faire chauffer l'eau avec une
pincée de sel

Ouf page 15 225971 2 Porter à ébullition

Ouf page 15 225971 3 Laisser frémir 9 minutes

Ouf page 15 225971 4 Refroidir

Ouf page 16 225971 5 Ecaler et couper en deux

Poireau page 18 225972 1 Choisir les poireaux de grosseur
régulière

Poireau page 19 225972 2 Enlever les feuilles flétries

Poireau page 19 225972 3 Fendre en deux dans la longueur

Poireau page 19 225972 4 Couper en fines lamelles

Poireau page 19 225972 5 Faire cuire à la vapeur



Pour obtenir ceci :



Ouf - page 15 n° 225971 (le sujet - la 1ère page & n° la clef)

- Faire chauffer l'eau avec une pincée de sel (ligne 1)

- Porter à ébullition (ligne 2)

- Laisser frémir 9 minutes (ligne 3)

- Refroidir (ligne 4)

- Ecaler et couper en deux (ligne 5)

Poireau - Page 18 n° 225972

- Choisir les poireaux de grosseur régulière

- Enlever les feuilles flétries

- Fendre en deux dans la longueur

- Couper en fines lamelles

- Faire cuire à la vapeur



Vous l'avez compris, je ne sais même pas faire cuire un ouf, mais j'ai faim
et envie de poireaux !

Merci d'avance

Cordialement

Gérard
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Trirème
Le #4962911
Vous l'avez compris, je ne sais même pas faire cuire un ouf, mais j'ai faim
et envie de poireaux !


J'ai bien une idée de ce qu'on peut faire avec un poireau
ici : http://radicalcorp.info/loituma/loituma.swf
;-)

Cordialement,
Trirème

G. L
Le #4962891
;-)))

Au moins ça détend !!!
Gérard



"Trirème" news:
Vous l'avez compris, je ne sais même pas faire cuire un ouf, mais j'ai
faim


et envie de poireaux !


J'ai bien une idée de ce qu'on peut faire avec un poireau
ici : http://radicalcorp.info/loituma/loituma.swf
;-)

Cordialement,
Trirème



Trirème
Le #4962841
Si tu n'es pas couché à cette heure tardive, je peux te proposer la grande s½ur
de la précédente ici : http://www.koreus.com/animation/loituma-manga.html

...et puisque tu le mérites surement, cette macro, à adapter selon le nombre de
tes colonnes. Le code est d'autant plus simple que je suppose tes données triées
au départ (important). Si tel n'était pas le cas tu n'as qu'à revenir ici :

Sub RecettesEnLigne()
' MPFE le 4 octobre 2007, 21h40 (GMT+0200)
' De : G.
' Sujet : En VBA, extraire d'un tableau des cellules côte à côte
' pour les mettre les unes sous les autres dans une seule colonne
' Réponse de Trirème

' Au début, la feuille active est celle contenant les recettes en "colonnes".
' La macro ajoute une feuille pour y transcrire en lignes
' les données côte à côte de la feuille de départ

Dim LigneSource As Double, LigneDest As Double
Dim Sujet As String, SujetEnCours As String
Dim CotesACotes As Worksheet, EnLigne As Worksheet

LigneSource = 2: LigneDest = 1
Set CotesACotes = ActiveSheet
Set EnLigne = Sheets.Add
EnLigne.Name = "Recettes" ' Erreur si elle existe déjà

With CotesACotes
Sujet = .Range("A" & LigneSource)
Do Until Sujet = ""
If Sujet <> SujetEnCours Then
' Éventuellement faire un saut de ligne ici : LigneDest = LigneDest + 1
SujetEnCours = Sujet
EnLigne.Range("A" & LigneDest) = Sujet & " - " & _
.Range("B" & LigneSource) & " n°" & .Range("C" & LigneSource)
LigneDest = LigneDest + 1
EnLigne.Range("A" & LigneDest) = "- " & .Range("E" & LigneSource)
LigneDest = LigneDest + 1
LigneSource = LigneSource + 1
Else
EnLigne.Range("A" & LigneDest) = "- " & .Range("E" & LigneSource)
LigneDest = LigneDest + 1
LigneSource = LigneSource + 1
End If
Sujet = .Range("A" & LigneSource)
Loop
End With
End Sub


Cordialement,
Trirème

;-)))

Au moins ça détend !!!
Gérard



"Trirème" news:
Vous l'avez compris, je ne sais même pas faire cuire un ouf, mais j'ai
faim


et envie de poireaux !
J'ai bien une idée de ce qu'on peut faire avec un poireau

ici : http://radicalcorp.info/loituma/loituma.swf
;-)

Cordialement,
Trirème







G. L
Le #4962251
Bonjour Trirème,

Merci beaucoup pour ce très sérieux coup de main. Maintenant, je dois
pouvoir résoudre mon problème, car ta proposition est parfaite. Et si je
bloque à nouveau alors je suivrai ton conseil, je reviendrai avec un nouveau
légume ;-)
Les données sont bien triées (croissant) par N° de clef et n° de ligne.
Désolé de te répondre aussi tardivement, bien que j'ai lu ta réponse très
tôt ce matin, mais je n'étais pas sur ma machine préférée ;)
Finalement, le sujet des poireaux (judicieusement choisi ;-) s pas ? ) m'a
conduit dans un univers jusqu'alors inconnu, riche en surprises, merci
également pour cette découverte. C'est fou ce que j'aimerai rajeunir !

...et puisque tu le mérites surement ==> A que oui !!! ;)


Cordialement.
Gérard




"Trirème" news:%
Si tu n'es pas couché à cette heure tardive, je peux te proposer la grande
s½ur

de la précédente ici : http://www.koreus.com/animation/loituma-manga.html

...et puisque tu le mérites surement, cette macro, à adapter selon le
nombre de

tes colonnes. Le code est d'autant plus simple que je suppose tes données
triées

au départ (important). Si tel n'était pas le cas tu n'as qu'à revenir ici
:


Sub RecettesEnLigne()
' MPFE le 4 octobre 2007, 21h40 (GMT+0200)
' De : G.
' Sujet : En VBA, extraire d'un tableau des cellules côte à côte
' pour les mettre les unes sous les autres dans une seule colonne
' Réponse de Trirème

' Au début, la feuille active est celle contenant les recettes en
"colonnes".

' La macro ajoute une feuille pour y transcrire en lignes
' les données côte à côte de la feuille de départ

Dim LigneSource As Double, LigneDest As Double
Dim Sujet As String, SujetEnCours As String
Dim CotesACotes As Worksheet, EnLigne As Worksheet

LigneSource = 2: LigneDest = 1
Set CotesACotes = ActiveSheet
Set EnLigne = Sheets.Add
EnLigne.Name = "Recettes" ' Erreur si elle existe déjà

With CotesACotes
Sujet = .Range("A" & LigneSource)
Do Until Sujet = ""
If Sujet <> SujetEnCours Then
' Éventuellement faire un saut de ligne ici : LigneDest LigneDest + 1
SujetEnCours = Sujet
EnLigne.Range("A" & LigneDest) = Sujet & " - " & _
.Range("B" & LigneSource) & " n°" & .Range("C" & LigneSource)
LigneDest = LigneDest + 1
EnLigne.Range("A" & LigneDest) = "- " & .Range("E" &
LigneSource)

LigneDest = LigneDest + 1
LigneSource = LigneSource + 1
Else
EnLigne.Range("A" & LigneDest) = "- " & .Range("E" &
LigneSource)

LigneDest = LigneDest + 1
LigneSource = LigneSource + 1
End If
Sujet = .Range("A" & LigneSource)
Loop
End With
End Sub


Cordialement,
Trirème

;-)))

Au moins ça détend !!!
Gérard



"Trirème" news:
Vous l'avez compris, je ne sais même pas faire cuire un ouf, mais j'ai
faim


et envie de poireaux !
J'ai bien une idée de ce qu'on peut faire avec un poireau

ici : http://radicalcorp.info/loituma/loituma.swf
;-)

Cordialement,
Trirème









Publicité
Poster une réponse
Anonyme