Améliorer une macro super compliquée
Résolu
Qhes
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
-
Qhes Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
Qhes Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Améliorer une macro super compliquée
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Super copier - Télécharger - Gestion de fichiers
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Super screen recorder - Télécharger - Capture d'écran
12 réponses
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 ?
@+
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 ?
@+
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
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
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
@+
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
@+
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
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
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
@+
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
@+
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 :)
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 :)
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.
@+
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.
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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?
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?
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
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
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
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
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"
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"
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 ?
@+
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 ?
@+
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)
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)
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
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
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 :)
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 :)
Tu pourrais serieusement faire ça?
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
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
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....
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....