Améliorer une macro super compliquée

Résolu/Fermé
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
-
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
-
Bonjour,

voilà, j'ai les deux macro suivantes :


Sub Séparer()
'
' découper Macro
' Macro enregistrée le 15/07/2008 par
'
Application.ScreenUpdating = False


Dim i As Integer, NbLigne As Integer, Contenu

Range("B2").Select 'point de départ
While ActiveCell.Value <> Empty
Contenu = Split(ActiveCell.Value, Chr(10))
NbLigne = UBound(Contenu)
If NbLigne > 0 Then
With ActiveCell
Range(.Offset(1, 0), .Offset(NbLigne, 0)).EntireRow.Insert
For i = 0 To NbLigne
.Offset(i, 0).Value = Contenu(i)
.Offset(i, -1).Value = .Offset(0, -1).Value
.Offset(i, 1).Value = .Offset(0, 1).Value
Next i
End With
End If
ActiveCell.Offset(NbLigne + 1, 0).Activate
Wend
Application.ScreenUpdating = True
End Sub

Sub Rassembler()
'
' Macro9 Macro
' Macro enregistrée le 01/10/2008 par
'

Dim lig As Long
Const col1 = 1 ' colonne A
Const col2 = 2 ' colonne B
For lig = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(lig, col1) = Cells(lig + 1, col1) Then
Cells(lig, col2) = Cells(lig, col2) & Chr(10) & Cells(lig + 1, col2)
Rows(lig + 1).Delete
If Cells(lig + 1, col1) = "" Then Exit For
lig = lig - 1
End If
Next lig
End Sub






Sub CreateTransMenu()
Dim TransMenu As CommandBarPopup

On Error Resume Next
With Application.CommandBars(1)
Set TransMenu = .Controls.Add _
(Type:=msoControlPopup, before:=.Controls.Count)
End With

TransMenu.Caption = "Johanna"

'Creation des sous-menus


With TransMenu.Controls.Add(msoControlButton)
.Caption = "Séparer"

.OnAction = "Séparer"
End With

With TransMenu.Controls.Add(msoControlButton)
.Caption = "Rassembler"

.OnAction = "Rassembler"
End With

With TransMenu.Controls.Add(msoControlButton)
.Caption = "Test 1"

.OnAction = "test1"
End With
End Sub


j'en suis suis vraiment ravie mais le "ik" (eh oui il y à toujours un "ik"... elle ne prend en compte que les 2 première colonnes et j'adorerais pouvoir lui dire bah écoute tu vois cette action? bah tu le fait sur les colonne E et F et tu copie tout ce qui est dans A, B, C, D a chaque fois que tu cré un ligne...

Vous croyez que c'est possible?

Merci d'avance


Je peux peux vous laisser un exemple d'application si nécéssaire.


Merci d'avance
Johanna

12 réponses

Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Je pense que c'est possible...mais je n'ai pas bien compris ce que tu souhaites faire.
Pourrais-tu donner un exemple de ce que tu as et du résultat que tu souhaites ?

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
bonjour,

pour que ce soit plus claire, voici un fichier qui traite du problème en question :)

http://www.cijoint.fr/cjlink.php?file=cj201105/cij9atnEfr.xlsx

merci d'avance
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonjour Qhes,
Désolé, j'ai un peu tardé à traiter ton post, as-tu toujours besoin d'améliorer ta macro ?

J'ai compris ce que tu souhaites faire mais j'ai besoin d'informations complémentaires :
- Pour la fonction séparer, souhaites-tu séparer la colonne B puis la colonne C, puis D ... jusqu'à ce que les cellules soient vides avec la même macro ou veux-tu une macro qui sépare la colonne B et une autre qui sépare la colonne C (ce serait la même fonction paramétrable)
- Même question pour la fonction rassembler

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
bonjour

oh oui, j'ai toujours besoin de l'amélioré lol
je l'ai depuis bientot 3ans et a chaque fois que je m'en sert 2 à 3 fois par mois je me prend la tete lol

en fait dans les 2 cas j'aimerais une macro qui opère sur la colonne B puis une autre sur la colonne C et une autre sur la D et ainsi de suite
Ou bien une macro qui me demande sur quelle colonne je veux faire l'opération...

En fait pour t'expliquer le déroulé de la manip :
1 - je mets des codes articles dans la colonne A
2 - Avec une formule rechercheV je vais chercher la composition de chaque article et l'indique dans la colonne B (c'est pour cette raison que j'ai plusieurs info dans la meme cellule) (je me suis en temps servi de la macro rassemblé pour avoir plusieurs infos dans une cellule).
3 - je découpe les cellule de la colonne B avec la macro afin d'obtenir une info par cellule
4 - avec la formule recherchV je reitère l'opération en mettant dans la colonne C les composition des sous article trouvé en colonne B précédemment
5 - je me débrouille pour couper la colonne C et je recommance

au final je fait ça pour les colonnes B, C, D, E, F, G, H et peut etre I

Par contre en y refelchissant je ne pense pas pour le moment avoir besoin de modifier la macro "rassembler"...
Donc si c trop compliquer pas la peine de se rendre la tete de ce coté là...

Je te rappelerais au secour à ce moment là :)

Merci d'avance
Johanna
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Je vais commencer par une macro qui te demande sur quelle colone tu veux travailler mais en lisant le détail de ta manip, je pense qu'il est possible d'intégrer la fonction RECHERCHEV dans la macro.
Si tu veux que je regarde dans cette direction, je pense qu'il serait plus facile de mettre un exemple de fichier avec les données brutes sur quelques lignes

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
WAAHOOO!!! serais-tu un géni??? :)

je ne t'en demande pas tant mais c vraiment tres gentil comme proposition
Je ne prend pas toujours les données au meme endroit donc ca va etre difficle de tout mettre dans une macro lol

mais si déja tu peux faire comme tu dis c'est a dire une macro qui me demande ou je veux travailler c déjà fantastique :) :) vraiment fantastique :)

par contre si elle me demande sur quelle colonne je veux qu'elle bosse faut quand meme qu'elle copie tout ce qui a dans les colonne précédente a chaque fois qu'elle crée une ligne :)
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Non, au risque de te décevoir, je n'ai rien d'un géni :-)
Voici un premier exemple pour que tu me donnes ton avis. Je n'ai traité que la fonction séparer. Si ça te convient, je fait la fonction rassembler dans la foulée.
http://www.cijoint.fr/cjlink.php?file=cj201106/cij1vWPoaC.xls

NB : avec ton ancienne macro, il y avait un problème au niveau de la gestion des erreurs. Si par exemple, en B100 tu avais #N/A, elle ne traitait pas les lignes suivantes.

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
bonjour,
je suis désolé de ne répondre que maintenant, j'étais en déplacement et en revenant j'avais pas mal de retard...

je viens tout juste de pouvoir me mettre sur ce dossier...

dans tous les cas merci pour ce que tu as fait sur ce fichier c'est génial et oui il y avait un erreur que je ne savais pas réparer donc j'effacais tout les lignes avec "NA"...

Par contre dans le fichier joint, il y a un truc que j'ai pas bien compris...
dans la feuille "données qui pose pb" les colone A et B sont bien unie données mais la colonne C elle est pas divisée.

est ce possible de lui demander de diviser toutes les colonne a chaque retour à la ligne?
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
oups... je viens de comprendre la question posée dans le cadre... oups...

et bien comme tu veux ou peux...

Question posée : on sépare B puis C puis ... ou une fonction sépare B une seconde sépare C, ...

réponse : c'est toi qui voit lol
les 2 me vont l'essentiel c'est qu'a la fin tout soit séparée lol

:D
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
D'après ce que je comprends dans tes messages, tu n'as pas essayé ma macro : tu te mets dans l'onglet données qui posent problème et tu lances la macro séparer.

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
euh... je crois bien que si... j'ai fait "complément", "johanna", "séparer"...
a moins qu'elle se trouve ailleurs?

il me dit : "erreur de complitaion" "membre de méthode ou données introuvable" et surligne "UF1_première_cecclule.Value)"
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
en relisant ta question, je pensque que ce qui serait le plus utilie ici serait une meme macro qui sépare B, puis C, puis D, etc...
enfin c'est toi qui voit, si pour toi l'autre solution est plus facile moi ca me va aussi :)
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
mais ta macro as t elle remplacer la mienne?
car ma macro est carrement dans le menu de la barre de tache excel...

c'est peut etre pour ca que je ne la met pas en route...
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Pour tester, tu ouvres juste mon fichier, puis Outils/Macros/Macro... et tu lances la macro Separer.
As-tu un message d'erreur ?
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Bonjour,

Je suis désolé de t'embéter avec mes questions à 2 balles...
en tout car merci beaucoup pour ta patiente...

oui, j'ai le meme message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonjour,
D'accord, et avec ce fichier, lorsque tu l'ouvres, est-ce qu'il se passe quelque chose ?
http://www.cijoint.fr/cjlink.php?file=cj201107/cij2bWk2YZ.xls

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
bonjour,
avec ce fichier jai le meme message qui s'affiche...
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonjour,
Voici une autre version. Si tu as toujours le message d'erreur, peux-tu me dire à quel niveau se met le curseur lorsque tu choisis débogage ?
http://www.cijoint.fr/cjlink.php?file=cj201107/cijPgnX9U0.xls

@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
je fichier est plus accessible... ca fait plus de 3mois... :/ (glup...)
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Voici le nouveau lien

https://www.cjoint.com/?AKEuXHZUxQh
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Bonjour,

Merci de prendre le temps de t'occuper de mon problème c'est vraiment très gentil :)

Le curseur ne me donne pas de message d'erreur mais ne fait pas les modif en colonne C

le curceur est en fin de course dans la célule B1138 de la feuille "données qui posent problème"
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Et avec ce code ?
Tu cliques sur le bouton dans la feuil4
https://www.cjoint.com/?ALgsx5eqXFu

Au fait, tu utilises quelle version de Excel ?
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Si tu était a coté de moi je crois que je t'aurais sauté au coup lol

bon restons calme lol
pour le moment je l'ai juste fait pour le fichier de ci-joint
je vais essayer sur d'autre fichiers
mais avant j'ai été tellement contente de voir que ca marchais au moins sur celui ci que je voulais te remercier :)

donc merci merci merci bcp !!!!!! :P

(je suis sous 2007)
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
De rien. Si tu as des questions, n'hésite pas. Je ne l'ai testé que sur 2003 donc il y a peut-être des adaptations à faire.
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Je vais essayer de la faire fonctionner aujourdhui sur 2007 je te dirais...

mais pour le moment elle est juste géniale!!!
tu es génial!!

Merci du fond du coeur!!!
tu ne te rend pas compte tu service que tu me rend, vraiment ça fait des années que je le fait à la mano tu va me faire gagner un temps considérable!!!
Je t'aurais invité à boire un verre si je te connaissais ou si je n'avais pas autant peur des rencontre internet mdrrrr

Merci Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonjour,
Génial ? Il faudra que je pense à le dire à mon chef au moment des augmentations ;-)
Sinon, je n'ai pas terminé le code, il y a juste la fonction séparer : je peux faire une adaptation du code pour la fonction rassembler. Ca t'intéresse ?
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
ca marche tiptop sur 2007!!
merci encore c'est vraiment super

je vais essayer de l'intégrer à mon menu complémentaire et ca sera le top :)
rien de cela n'aurait été possible sans ton aide merci Gord21!!

Si jamais un jour tu as du temps a tuer en bravant de nouveau les code vba pour adapter le rassembler je suis prenneuse :)
Mais c vraiment que si tu as du temps a tuer sinon c pas grave tu ma rendu vraiment un sacré service la!!!!
merci bcp bcp
c génial :)
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Oui, je pourrais trouver du temps a tuer. Peut-être demain
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Merci :)
mais ce n'est pas préssé et c'est vraiment que si tu as le temps.
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
par contre j'ai essayer de l'intégrer à mon sous menu mais ca ne marche pas
"impossible d'exécuter la macri 'onglet.xla!séparer'. il est possible qu'elle ne soit pas disponible dans ce classeur.

:/
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
Tu pourrais serieusement faire ça?
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Ben oui, je suis génial ;-)
Mais je ne pense pas pouvoir le faire cette année. Dans ton ancienne macro, visiblement, tu avais des menus, veux-tu que je les remette ?
@+
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
tu pense toujours a tout comme ça?

c'est super gentil mais j'ai réussi a l'integré dans un nouveau menu :)
trop forte la fille!!!
mdrrrr (surtout au gros coup de bol lol)

:)
mais merci d'y avoir pensé

sinon c'est pas grave si tu ne peux pas le "rassembler" tout de suite le plus important c'était le "séparer" chose que tu as brillament réussi :)

le rassembler pourrais aussi m'etre tres util mais je voudrais pas avoir l'aire d'en demander trop mdrrr
Messages postés
176
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
21 mai 2014
29
euh... depuis il y a eu les vacances... et puis la rentrée avec son lot de retard et puis d'autres déplacement avec leur lot de taf en plus...
et avec tout ça j'avais carrement oublié que je m'étais enfin décider a demande de l'aide concernant ce sujet...

dans le genre franchement à la masse je postule pour la médaille d'or...
Gord21?? Serais tu encore là? et surtout serais tu ok pour te souvenir de moi et des mes soucis de macro???

:(
je suis désolée....
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
287
Bonsoir,
Pas de problème, peux-tu répondre à ma question (#18)
@+