Colonne --> colonnes

Résolu
Bonjour!

J'ai une colonne avec des centaines de valeurs séparées par un texte :
2
5
8
OFF
8
4
9
7
OFF
...

Je souhaiterai obtenir X colonnes avec les valeurs séparées par le texte (ie OFF) :
2 8
5 4
8 9
7

etc...

Je ne trouve pas de réponse!
En vous remerciant!

11 réponses

  1. Contributeur
    (parce que moi je fous rien à 21h30 après une journée de travail...)).

    Quel Héros du XXI° siècle !

    Mossieu Guit a une haute opinion de lui-m^me!

    0
    1. Ca marche nickel! (le code de celui qui bosse Michel (parce que moi je fous rien à 21h30 après une journée de travail...)).
      Au lieu des off j'avais des h j'ai donc changé off par h dans le code et nickel!
      Génial.
      Merci.

      RESOLU
      0
      1. Merci à tous!
        Très (trop?*) réactif ici!!
        Guillaume
        • si on répond pas dans l'heure du post aux sympathiques réponses des forumers on se fait mal voir - dommage! Tout n'est pas forcément urgentissime et puis en l'occurrence ça peut être urgent mais avoir d'autres choses en cours (comme conduire ;)). Quoiqu'il en soit je remercie une nouvelle fois et vous dis mult bravos.
        0
        1. Hello,
          Tu as reussi à adapter le code ?
          PS : Je n'ai pas besoin d'une réponse dans l'heure ^^
          0
        2. Contributeur
          Ne pas répondre dans l'heure et ne faire aucun retour aux questions ou propositions sont 2 choses différentes.
          C'est faire peu de cas du temps consacré à aider, aussi minime soit-il.
          On en reparlera quand tu en seras à 20000 posts et 2000 vents Jauster ;-)
          D'ailleurs tu vois que tu es curieux de savoir si tu lui as apporté qq chose qui l'intéresse ou non...
          0
        3. @eriiicOui je me doute bien, je ne suis qu'un néophyte VBA/Aide sur Forum, donc je pense que je vais vite comprendre :) C'est juste que mon petit coeur en sucre trouvait ca un peu brusque.
          0
        4. Eric,
          Aux scouts, quand j'étais petit, j'ai appris qu'il fallait savoir donner sans attendre en retour... Si ton but est d'aider, aide et laisse les personnes qui ont des questions dans le bénéfice du doute lorsqu'ils ne répondent pas quand tu t'y attends.
          A bon entendeur.
          Je teste le code actuellement avec des lettres plutôt que les off!
          Merci pour votre aide prompte et précieuse.
          Guillaume
          0
        5. Contributeur
          Bonjour,

          j'ai appris qu'il fallait savoir donner sans attendre en retour...
          Tu as lu quelques chose à ce sujet ? Tout ne tournait qu'autour du fait que tu ne fournissais aucune réponse aux questions, ni de retour sur des propositions.
          On aurait dû t'apprendre à comprendre ce que tu lis aussi. Mais on peut également aborder le sujet oui.
          Quand j'étais petit scout on m'a appris à dire bonjour, à répondre quand on me posait une question et à dire merci en recevant quelque chose. Ca ne devait pas être au même endroit.
          eric

          PS : et oui j'aime bien qu'on me dise merci si la personne est contente d'avoir été dépannée, c'est mon seul salaire ici. Si c'est au-dessus de tes possibilités (tu séchais un peu les scouts non ?) tu peux te payer un professionnel.
          0
      2. Contributeur
        Surtout, ne pas regarder la solution proposée... Ni m^me répondre à toutes les questions:
        démarre t'on à la ligne 1 ou 2 ou.....?
        de toutes façons...
        0
        1. Contributeur
          Salut michel,

          je ne te met pas +1 pour ne pas faire remonter ce post mais j'adhère totalement à ta remarque.
          Trop fatigant de lire et faire un retour pour certains...
          eric
          0
      3. Bonjour,

        Tout d'abord : je vous remercie.
        Ensuite : j'ai posé la question puis je suis parti bossé donc je crois que ça peut se comprendre que je n'étais pas devant mon ordi - d'autant que je viens de faire l'A/R (3h) pour 4h de rdv ; merci de votre compréhension)

        Sur le fond avant de regarder plus en détail les propositions :
        j'ai appelé colonne ce qui est indiqué comme une colonne par excel (i.e. A) soit
        Colonne A
        1ere valeur
        2eme valeur ....
        xieme valeur
        OFF
        xième valeur +1
        ...

        Sans qu'il y ait le même nombre de valeurs entre les off.

        L'objectif est d'avoir les valeurs jusqu'au off sur A puis les valeurs suivantes sur B etc.

        Je regarde!
        Guillaume
        0
        1. Bonjour,

          Le code proposé au dessus (Message #2) permet de répondre à votre demande. ATTENTION : Il ne marche que si les données de départ sont sur la colonne A et dès la premiere ligne. Sinon il faut adapter le code (vous pouvez le faire vous-même ou revenir vers moi :)). Il n'est pas forcement très optimisé. Je n'ai pas regardé la proposition de michel_m, mais elle est à essayer également.
          0
        2. Merci!
          0
      4. Contributeur
        Ca fait plaisir les gens qui demandent de l'aide et ne suivent pas la discussion qui cherche à l'aider.Belle mentalité de ... (au choix)

        comme j'ai bossé
        https://mon-partage.fr/f/yhApu5ta/
        2500LIGNES avec 31 "OFF3 traitées en 0,15 secondes

        Abandon du suivi
        0
        1. Contributeur
          Bonjour à tous,

          Je souhaiterai obtenir X colonnes...
          Avec ton exemple, sans doute trop restrictif, X=2 mais... qu'en est-t-il ?
          Que se passe-t-il après le 2nd OFF ?
          Comme dit michel il faut être précis quand on fait une demande.
          eric

          0
          1. Contributeur
            Pas de réponse de Guit12... on laisse tomber ?
            0
            1. Contributeur
              Bonjour,

              Pour reprendre la réflexion de notre ami Vaucluse, pourquoi as tu inscrit le 7 en 1° colonne? faute de frappe?

              Des centaines de valeurs? 500 valeurs ? 1000 ? 5000 ? 100000 ? suivant le nombre, le code VBA pourra utiliser des méthodes différentes ou une solution par formule....

              Sur ton classeur, démarre t'on à la ligne 1 ou2 ou.....? quelle colonne: A, X, CD ?

              où met on le résultat ? à la place de la colonne initiale ?

              Merci d'^tre précis dans ta demande.

              au besoin
              Mettre le classeur sans données confidentielles en pièce jointe sur 
              https://mon-partage.fr/
              Puis faire un clic droit copier le raccourci et coller dans votre message


              0
              1. Hello,

                Si j'ai bien compris la question voici un code en VBA à introduire dans un module :

                Sub TEST()
                Dim sht As Worksheet
                Dim LastRow As Integer, LastColumn As Integer, LR As Integer
                Dim Copyrange As Range
                
                Set sht = ActiveSheet
                
                LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
                
                For i = 1 To LastRow
                
                LastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column
                LR = sht.Cells(sht.Rows.Count, LastColumn).End(xlUp).Row
                
                If Cells(i, LastColumn).Value = "OFF" Then
                Set Copyrange = Range(Cells(i + 1, LastColumn), Cells(LR, LastColumn))
                Copyrange.Cut Cells(1, LastColumn + 1)
                i = 0
                LR = sht.Cells(sht.Rows.Count, LastColumn).End(xlUp).Row
                Cells(LR, LastColumn).Clear
                End If
                
                Next i
                
                Application.CutCopyMode = False
                
                End Sub
                


                Il n'est pas super propre et il y a surement beaucoup de manières différentes de le faire, mais ça marche mon côté
                0
                1. EDIT : Effectivement je n'ai pas précisé, mais suite au message de Michel_m je vais le faire :
                  Le code marche si la colonne de départ est en A et commence dès la première ligne.
                  0
                2. Contributeur
                  Bonjour

                  pendant que tu y es, ajoute après les déclarations
                  Application.screenupdating=False

                  question confort visuel et surtout rapidité

                  pas la peine de remettre à True en fin de procédure (la macro rend la main au systeme)
                  0
                3. @michel_mOops, oui j'ai oublié de le rajouter après compilation. Je n'arrive pas à modifier mon premier message, je ne sais pas pourquoi
                  0
              2. Contributeur
                Bonjour
                "Je ne trouve pas de réponse!"
                ...cela ne semble pas trop surprenant, vu votre question
                vous demandez des colonnes pour ce qui est séparé par des OFF, mais votre exemple de solution ne correspond pas tout à fait à ça
                si on s'en tient à la question:
                2 5 8
                8 4 9 7
                etc>...
                à vous lire?
                ctrdlmnt
                0