déplacer texte (pour les plus férus)

5

Alors attention: Je n'y connais rien.

Ma question: depuis Excel 2007; Je souhaite avec une formule quelconque: déplacer des textes dans une colonne, vers une ligne.

C'est à dire: j'ai dans la colonne A:

Cellule A2: Ail blanc - 3 têtes

Cellule A3:Oignon jaune Cal 70 mm

Cellule A4:Echalote cuisse de dinde 

Cellule A5:Oignon rouge Cal 60/80 mm 

Cellule A6:Echalote olive 

...

... j'ai plus de 230 lignes.

Je veux avoir dans la ligne:1

Cellule A1: Ail blanc - 3 têtes; Cellule B1: Echalote cuisse de dinde;

 Cellule C1:Echalote cuisse de dinde ...

Évidement pas question de glisser déplacer avec la souris

Peut-être une petite programmation simple? Peut être une petite formule qu'ensuite je peux copier coller la valeur donné uniquement???

Merci de votre aide.


Posté le 18 avril 2014, 19:04
par Lulu
Répondre
5

J'ai écrit une petite macro qui sert à transposer une colonne sur une ligne. Elle recopie les données de la première colonne (colonne A) sur une seule ligne, en commençant à la colonne B1 (on peut changer ça simplement en modifiant la ligne Set copyTo = Range("B1")) :

'Cette fonction recopie les données de la première colonne
'sur une ligne dont la première cellule est copyTo (par défaut : B1)
Sub inverser_ligne_colonne()
    'Déclarations
    Dim firstCell, lastCell, copyTo As Range, i, currentCol As Integer
    
    'Récupération de la première et de la dernière cellule de donnée de la première colonne (A)
    Set firstCell = Range("A1").End(xlDown)
    Set lastCell = Range("A65536").End(xlUp)
    
    'Configuration
    Set copyTo = Range("B1")
    
    'Parcours des cellules de la colonne A
    currentCol = copyTo.Column
    For i = firstCell.Row To lastCell.Row
        Cells(copyTo.Row, currentCol) = Cells(i, firstCell.Column)
        currentCol = currentCol + 1
    Next
End Sub

Voici comment l'exécuter :

  • Aller dans l'onglet Développeur (ruban office)
  • Cliquer sur le bouton Macros (à gauche)
  • Sélectionner la macro inverser_ligne_colonne
  • Cliquer sur le bouton Exécuter

Fichier d'exemple ici : q393-macro-inverser-ligne-colonne.xlsm.

Vince Posté le 18 avril 2014, 22:07
par Vince
5

Ok merci Vince. J'ai rien compris (enfin presque). Mais je me concentre la dessus, je me documente, et je te tien au courant. A plus tard

Lulu Posté le 19 avril 2014, 08:10
par Lulu
  • Yess !!! Ca marche. J’ai eu du mal à comprendre au début, a cause de fenêtre que je n’avais vu Objet -VBAProject… D’autant que j’avais une info au départ: SECURITE HAUTE MACRO DESACTIVE. Alors la galère Mais maintenant j’ai réussi à modifié Set firstCell = Range("A1").End(xlDown). Merci, maintenant au boulot. A plus tard a l’aube de nouvelle galère… – Lulu 19 avril 2014, 08:51
  • Pour aller un peu plus loin dans les macros :
    Comment fait-on pour qu'une instruction de macro se répète un certain nombre de fois.

    J'ai fait une macro qui permet de supprimé une ligne sur deux. Mais pour 300 lignes, je répète 300 fois l'instruction en copiant et collant; C'est pas cool. Surtout quand j'ai un message: "LIGNE D'INSTRUCTION TROP IMPORTANTE"

    Cela donne ceci:

    Range("A2").Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    Selection.EntireRow.Delete
    ActiveCell.Offset(1,0).Select
    ....
    ....
    ....

    Merci

    Lulu 20 avril 2014, 13:06
  • Facile à faire avec une simple boucle :

    Sub supprimer_une_ligne_sur_deux()
        'Sélection d'une cellule appartenant à la première ligne à supprimer
        Range("A2").Select
        
        Dim i, start, cpt As Long
        cpt = 0
        start = ActiveCell.Row
        For i = start To 300
            If cpt Mod 2 = 0 Then
                'Une ligne sur 2, on supprime la ligne courante
                Selection.EntireRow.Delete
            Else
                'On passe à la ligne suivante
                ActiveCell.Offset(1, 0).Select
            End If
            
            cpt = cpt + 1
        Next
    End Sub
    
    Vince 21 avril 2014, 01:30
  • Merci merci...je vais faire un copier / coller de ça. – Lulu 25 avril 2014, 21:40
2

Pour transformer une colonne en ligne, tu peux aussi sélectionner la colonne que tu souhaites transposer, faire copier puis collage spécial >> Transposer. Et là, miracle !

Posté le 25 avril 2014, 17:01
par Sag

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :