Colonne --> colonnes

Résolu
guit12 Messages postés 10 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. Jauster Messages postés 142 Statut Membre 42
     
    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. Jauster Messages postés 142 Statut Membre 42
       
      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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      1. Jauster Messages postés 142 Statut Membre 42 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oops, oui j'ai oublié de le rajouter après compilation. Je n'arrive pas à modifier mon premier message, je ne sais pas pourquoi
        0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Pas de réponse de Guit12... on laisse tomber ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  8. guit12 Messages postés 10 Statut Membre
     
    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. Jauster Messages postés 142 Statut Membre 42
       
      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. guit12 Messages postés 10 Statut Membre
       
      Merci!
      0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  10. guit12 Messages postés 10 Statut Membre
     
    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. Jauster Messages postés 142 Statut Membre 42
       
      Hello,
      Tu as reussi à adapter le code ?
      PS : Je n'ai pas besoin d'une réponse dans l'heure ^^
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      1. Jauster Messages postés 142 Statut Membre 42 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui 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
    3. guit12 Messages postés 10 Statut Membre
       
      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
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  11. guit12 Messages postés 10 Statut Membre
     
    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
  12. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    (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