Formule ou macro
Résolu
Joie
-
Joie -
Joie -
Bonjour,
Voilà mon petit souci j'aurais souhaité que lorsque je choisis "nouveau prix" dans la cellule B5 et que par la suite dans la cellule B6 je choisis "Même tarif ou Promotion" qu'il fussionne les cellules D5 à D6. Si je choisis encore "Même tarif ou promotion qu'il me la fusionne de D5 à D7 et ainsi de suite. Il ne fusionne pas les montants uniquement s'il s'agit d'un nouveau client. Ca devrait donné ca! :-) Je serai vraiment reconnaissante à la personne qui pourra m'aider.
Je sais que je peux le faire moi-même mais si c'était automatiser ce serait vraiment pratique car il y a beaucoup de données et j'oublie quelquefois de fusionner les cellules et des les additionner.
https://www.cjoint.com/?jEwiAkISW2
:-) Help
Voilà mon petit souci j'aurais souhaité que lorsque je choisis "nouveau prix" dans la cellule B5 et que par la suite dans la cellule B6 je choisis "Même tarif ou Promotion" qu'il fussionne les cellules D5 à D6. Si je choisis encore "Même tarif ou promotion qu'il me la fusionne de D5 à D7 et ainsi de suite. Il ne fusionne pas les montants uniquement s'il s'agit d'un nouveau client. Ca devrait donné ca! :-) Je serai vraiment reconnaissante à la personne qui pourra m'aider.
Je sais que je peux le faire moi-même mais si c'était automatiser ce serait vraiment pratique car il y a beaucoup de données et j'oublie quelquefois de fusionner les cellules et des les additionner.
https://www.cjoint.com/?jEwiAkISW2
:-) Help
A voir également:
- Formule ou macro
- Formule si ou - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel ligne - Guide
4 réponses
bonjour,
si, chez moi ca défusionne; je teste toujours avant de fournir une réponse
ci dessous nouvelle macro pour "un tableau très grand " et qui recopie les données colonnes B et D (ce n'était pas précisé dans ta demande et pourrait être fait par formule si pas "tableau très grand" )
si, chez moi ca défusionne; je teste toujours avant de fournir une réponse
ci dessous nouvelle macro pour "un tableau très grand " et qui recopie les données colonnes B et D (ce n'était pas précisé dans ta demande et pourrait être fait par formule si pas "tableau très grand" )
Option Explicit
Const dep As Byte = 5 'ligne départ tableau
Const texto As String = "nouveau pix" ' texte séparateur
Sub fusionner_cellule()
Dim derlig As Long, nbre As Long, lig As Long, cptr As Long
Dim tablo
'initialisation
derlig = Range("B65536").End(xlUp).Row
Application.ScreenUpdating = False 'fige le défilement de l'écran
Range(Cells(dep, 6), Cells(65535, 8)).Clear 'défusionne col H et nettoie col F, G,H
nbre = Application.CountIf(Range(Cells(dep, 2), Cells(derlig, 2)), texto)
ReDim tablo(nbre)
'collecte les numéros des lignes comportant texto
lig = dep - 1
For cptr = 1 To nbre
tablo(cptr - 1) = Columns(2).Find(texto, Cells(lig, 2)).Row
lig = tablo(cptr - 1)
Next
tablo(cptr - 1) = derlig + 1
'restitue
For cptr = 1 To UBound(tablo)
With Range(Cells(tablo(cptr - 1), 8), Cells(tablo(cptr) - 1, 8))
.Merge 'fusionne les cellules
.Value = Application.Sum(Range(Cells(tablo(cptr - 1), 4), Cells(tablo(cptr) - 1, 4))) 'somme nouveau prix
End With
Next
'recopie les nouvelles données
Range(Cells(dep, 6), Cells(derlig, 6)) = Range(Cells(dep, 2), Cells(derlig, 2)).Value
Range(Cells(dep, 7), Cells(derlig, 7)) = Range(Cells(dep, 4), Cells(derlig, 4)).Value
' met en forme le tableau
With Range(Cells(dep, 6), Cells(derlig, 8))
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.Weight = xlThin
End With
End Sub
Bonjour,
regarde si cette macro te convient:
tite demo:
https://www.cjoint.com/?kbkrFICjXB
regarde si cette macro te convient:
Option Explicit
Const dep As Byte = 5 'ligne départ tableau
Const texto As String = "nouveau pix" ' texte séparateur
Sub fusionner_cellule()
Dim derlig As Long, nbre As Long, lig As Long, cptr As Long
Dim tablo
'initialisation
derlig = Range("B65536").End(xlUp).Row
nbre = Application.CountIf(Range(Cells(dep, 2), Cells(derlig, 2)), texto)
Range(Cells(dep, 8), Cells(derlig, 9)).Clear
ReDim tablo(nbre)
'collecte les numéros des lignes comportant texto
lig = dep - 1
For cptr = 1 To nbre
tablo(cptr - 1) = Columns(2).Find(texto, Cells(lig, 2)).Row
lig = tablo(cptr - 1)
Next
tablo(cptr - 1) = derlig + 1
'restitue
For cptr = 1 To UBound(tablo)
With Range(Cells(tablo(cptr - 1), 8), Cells(tablo(cptr) - 1, 8))
.Merge 'fusionne les cellules
.HorizontalAlignment = xlCenter 'présentation
.VerticalAlignment = xlCenter 'présentation
.Borders.Weight = xlThin 'présentation
.Value = Application.Sum(Range(Cells(tablo(cptr - 1), 4), Cells(tablo(cptr) - 1, 4))) 'somme nouveau prix
End With
Next
End Sub
tite demo:
https://www.cjoint.com/?kbkrFICjXB
Salut,
Tout d'abord merci pour ta réponse rapide c'est effectivement ce que je voulais mais l'ennui c'est que si je modifie quelque chose par exemple j'ai utilisé la macro mais je me rends compte que je me suis trompé dans la cellule F13 ou B13. Je devais mettre nouveau pris et bein ca ne le corrige pas! Il devrait défusionner la cellule...
C'est que le tableau est vraiment très grand et desfois j'ai aussi des mauvaises informations que je dois corriger... est-ce que tu as une solution? :-(
Tout d'abord merci pour ta réponse rapide c'est effectivement ce que je voulais mais l'ennui c'est que si je modifie quelque chose par exemple j'ai utilisé la macro mais je me rends compte que je me suis trompé dans la cellule F13 ou B13. Je devais mettre nouveau pris et bein ca ne le corrige pas! Il devrait défusionner la cellule...
C'est que le tableau est vraiment très grand et desfois j'ai aussi des mauvaises informations que je dois corriger... est-ce que tu as une solution? :-(
Il faut que tu relances la macro...
les cellules fusionnées sont détruites au départ dans le paragraphe initialisation par cette instruction:
Range(Cells(dep, 8), Cells(derlig, 8)).Clear
C'est que le tableau est vraiment très grand
Tu aurais pu le préciser AVANT: le raisonnement est souvent différent suivant le nombre de lignes prévisible (très grand est subjectif et ne veut rien dire: 1000 ou 10000 ou 50000 lignes est un renseignement exploitable ...)
Ainsi, il faut ajouter une instruction figeant le défilement de l'écran:rapidité et confort
Application.ScreenUpdating = False
donc le groupe initialisation de vient celui-ci à copier coller à la place (accès VBA: Alt+F11)
les cellules fusionnées sont détruites au départ dans le paragraphe initialisation par cette instruction:
Range(Cells(dep, 8), Cells(derlig, 8)).Clear
C'est que le tableau est vraiment très grand
Tu aurais pu le préciser AVANT: le raisonnement est souvent différent suivant le nombre de lignes prévisible (très grand est subjectif et ne veut rien dire: 1000 ou 10000 ou 50000 lignes est un renseignement exploitable ...)
Ainsi, il faut ajouter une instruction figeant le défilement de l'écran:rapidité et confort
Application.ScreenUpdating = False
donc le groupe initialisation de vient celui-ci à copier coller à la place (accès VBA: Alt+F11)
'initialisation
derlig = Range("B65536").End(xlUp).Row
nbre = Application.CountIf(Range(Cells(dep, 2), Cells(derlig, 2)), texto)
Application.ScreenUpdating = False
Range(Cells(dep, 8), Cells(derlig, 8)).Clear
ReDim tablo(nbre)
Oui pardon! C'est vrai que maintenant que tu le dis ca me paraît logique! :-)
Mais il ne me le défusionne pas! :-( Est-ce que je fais quelque chose de faux?
Je t'ai envoyé le lien avec un exemple de correction. :-)
https://www.cjoint.com/?kcjtnKGiIu
Merci pour ton aide
Mais il ne me le défusionne pas! :-( Est-ce que je fais quelque chose de faux?
Je t'ai envoyé le lien avec un exemple de correction. :-)
https://www.cjoint.com/?kcjtnKGiIu
Merci pour ton aide
Ca va vraiment me faciliter la vie! :-) Encore une petite question si ce n'est pas trop demandé ? Est-ce que ce serait possible qu'il me fussionne les cellules mais directement dans le premier tableau c'est-à-dire dans les lignes D :-)
Juste une dernière question il faut que j'adapte ta formule que je mette les chiffres dans la colonne V et que le les fusionnes dans la colonne X. pour que ca fussionne en colonne X j'ai compris mais par contre je n'arrive pas à modifier la formule pour que ça me prenne les résultats dans la colonne X au lieu de la colonne D. Peux-tu juste m'expliquer comment faire? :-(