Découper une colone en plusieurs (pas comme vous pensez!)

Zdouf

XLDnaute Nouveau
Bonjour à tous,

Après plusieurs recherche, je viens à vous. Je cherche par le biais d'une macro à séparer une colonne en plusieurs mais pas comme il est souvent demandé sur le net (séparation d'une chaine de caractèere en plusieurs colonnes).

Je m'explique:
J'ai une colonne unique avec des chaines de caractère sur 1000 lignes environ, avec des redondances. Je cherche donc à couper la colonne dès apparition d'un mot spécifique dans une ligne et à coller cette coupe de lignes dans la colonne suivante.

Il me suffirait de faire une boucle recherchant la ligne contenant le mot dans chaque nouvelle colonne collée qui couperait à ce moment là dès la ligne contenant le mot et recollerait dans la colonne suivante... c.f. le petit exemple joint

Le problème: je suis une quiche en programmation Excel, je débute!

D'avance, merci.
 

Pièces jointes

  • 2011-08-06 18h43_35.png
    2011-08-06 18h43_35.png
    16.8 KB · Affichages: 106
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Découper une colone en plusieurs (pas comme vous pensez!)

Bonjour Zdouf, et bienvenue sur le site,

Voici un fichier exemple avec une macro attachée au bouton CommandButton1.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Zdouf.xls
    25 KB · Affichages: 87

Staple1600

XLDnaute Barbatruc
Re : Découper une colone en plusieurs (pas comme vous pensez!)

Bonsoir, re papou

Bah alors t'as oublié tes Dim ;)

Dim cel As Range

PS: bravo pour ce code
auquel j'aurai ajouté en plus du dim plus haut un petit
Application.ScreenUpdating =False de derrière les fagots ;)
 

Softmama

XLDnaute Accro
Re : Découper une colone en plusieurs (pas comme vous pensez!)

Bonjour Zdouf, Papou-net, Staple1600.

S'il y a beaucoup de lignes à traiter, je te propose une méthode nettement plus rapide ici :
VB:
Private Sub CommandButton1_Click()
Dim c As Range, d As Range, Dest As Range, Fin As Range
Set Dest = [C1]: Set Fin = [A60000].End(xlUp)(2, 1)
Fin = [A1]
With Range("A2:A65536")
  Set c = .Find(After:=[A2], what:=[A1].Text, LookIn:=xlValues, lookat:=xlWhole)
     Range([A1], c(0, 1)).Copy Dest(1, 0)
     Do While c.Address <> Fin.Address
       Set d = .FindNext(c)
       Range(c, d(0, 1)).Copy Dest
       Set Dest = Dest(1, 2)
       Set c = d
     Loop
End With
Fin = ""
End Sub
 

Pièces jointes

  • Zdouf2.xls
    36.5 KB · Affichages: 59

Zdouf

XLDnaute Nouveau
Re : Découper une colone en plusieurs (pas comme vous pensez!)

Bonjour à tous.
Merci pour vos réponses!!
Au travail, je teste ça ce soir en rentrant et vous tiens au courant.
En tous cas, grâce à vous, j'en connais un peu plus sur les commandes VBA et leurs arguments: encore merci!!
Bonne journée.
 

Zdouf

XLDnaute Nouveau
Re : Découper une colone en plusieurs (pas comme vous pensez!)

Bonjour!

Bon, ça marche du tonnerre!
J'ai repris le code de Softmama (bcp de lignes à traiter).
Je l'ai modifié pour mes besoins (cellule contenant plusieurs mot dont celui recherché: LookAt:=xlPart).
Grâce à vous, je peux bosser sur votre exemple: étudier et comprendre la classe "range", les boucle...
Merci encore!
 

Discussions similaires

Statistiques des forums

Discussions
312 793
Messages
2 092 157
Membres
105 241
dernier inscrit
Mixlsm