Colonne --> colonnes

Résolu
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 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

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41 > michel_m Messages postés 16602 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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Pas de réponse de Guit12... on laisse tomber ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41
 
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
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Merci!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41
 
Hello,
Tu as reussi à adapter le code ?
PS : Je n'ai pas besoin d'une réponse dans l'heure ^^
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
Jauster Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   41 > eriiic Messages postés 24603 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
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
guit12 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
(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