Ajustement automatique (cellulle fusionnée) [Fermé]

Signaler
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
-
 Goninph -
Salut,

Voilà j'ai deux cellules fusionnées ensemble qui contiennent du texte ou des chiffres...mais, vu qu'elles sont fusionnées, je ne peux pas les ajuster automatiquement...donc je chercherai une macro pour les faires fonctionnées (je ne m'y connai pas super bien la dedans, mais j'en ai déjà une (macro) sur la feuille concernée, mais pas sur la celulle en question)
j'ai déjà regardé ici : https://www.developpez.net/forums/d415969/logiciels/microsoft-office/excel/macros-vba-excel/ajuster-automatiquement-hauteur-ligne-d-cellule-fusionne/
et là : https://www.developpez.net/forums/d392134/logiciels/microsoft-office/excel/macros-vba-excel/ajustement-texte-multilignes-cellule/
mais lorsque j'insère la macro (des liens en dessus), celle ci n'a pas l'air de fonctionner...alors si quelqu'un pouvai me donner le code complet de la macro (du début à la fin donc ^^) pour les cellules : E61:F61

merci beaucoup =D

22 réponses

Messages postés
143
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
16 octobre 2011
21
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65005 internautes nous ont dit merci ce mois-ci

Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Salut,

Pour les cellules fusionnées horizontalement uniquement, seule la hauteur de ligne peut être automatisée par la commande
ActiveCell.Rows.EntireRow.AutoFit par exemple

Pour automatiser la largeur les cellules ne doivent pas être fusionnées horizontalement

Dans la cas de cellules non fusionnées, avec cette commande placée dans les propriétés de la feuille concernée la hauteur et la largeur de la cellule active est automatisée

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Rows.EntireRow.AutoFit
ActiveCell.Columns.AutoFit
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
oui, mais moi je ne désir pas une commande, mais bien une macro (code VBA)...je sais que cela est possible ! :D kk1 dans les liens donner plus haut dit que sa marche mm avec des cellules fusionnées, donc si tu connai une macro pour faire sa....volontiers :D

(j'ai une petite modif' sur le dossier...mtn les cellules sont : E61:F61 mais je vais les renommer pour que se soie plus simple)

merci :)
Messages postés
143
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
16 octobre 2011
21
J'ai une solution bateau ... hum ! tu dé-fusionnes, tu mets à la bonne taille la première cellule et tu re-fusionnes ... (tous ça en automatique ...)

non ?

ENCORE MIEUX !

tu fais ce que je viens de dire et tu gardes en mémoire la taille de la colonne, puis tu re-fusionnes les deux cellules et tu attribues à chaque colonne la moitié de la valeur ... :)


EDIT:

Un exemple :
On peut après l'automatiser pour plusieurs colonne en calculant le nombre de cellules que l'on fusionne horizontalement...

    Columns("C").AutoFit
    Dim largeur As Variant
    largeur = Columns("C").ColumnWidth
    
    Range("C10:D10").Select
    Range("D10").Activate
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Columns("C:C").Select
    Selection.ColumnWidth = largeur / 2
    Columns("D:D").Select
    Selection.ColumnWidth = largeur / 2

Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Re tous,

Pour répondre au post 3 de ptit-suisse, ce que je lui donnais post 2 c'est un code macro à placer dans le code feuille pour automatiser la largeur et la hauteur de la cellule active

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell.Rows.EntireRow.AutoFit
ActiveCell.Columns.AutoFit
End Sub

pour un macro commandé par un bouton c'est le même code

Sub test()
ActiveCell.Rows.EntireRow.AutoFit
ActiveCell.Columns.AutoFit
End Sub

il faudrait connaitre les compétences de ptit-suisse en code VBA si non il sera difficile de parler VBA

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
heup o.O' ....pas tout compris désolé ! ^^

donc d'enregister une macro "pas à pas" ou je défusionne la cellule, je l'ajuste, et je la refusionne ?!?
...si c'est possible qu'elle se fasse automatiquement, dès qu'une valeur est inscrite dedans, je suis prenant...mais je ne sais pas comment l'automatisé (donc, que dès que kkchose est écrit dedans, elle s'ajuste...sa se fait automatiquement ?!?)

merci...j'essaye sa, et je te redi ;)

à++ par ici ^^
Messages postés
143
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
16 octobre 2011
21
tu as vu mon code en EDIT ?
Sinon, tu peux m'envoyer ton fichier et je le modifie ;) !
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
non, justement je l'ai vu juste après dsl^^

alors je te fais vite un cijoint...à dans 2 secondes ;)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
....bon...dsl, je viens de réacutaliser la page...

alors juste encore pour info' je vous donne un VBA qui est déjà dans le mm classeur histoire que se soit plus compréhensible pour toute le monde ;)

Option Explicit

Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(sel, Union(Range("C12:C16"), Range("E15"), Range("G33"), Range("G26"))) Is Nothing Then
    Dim cel As Range
    For Each cel In sel
        Application.EnableEvents = False
        cel.Value = UCase(cel.Value)
        Application.EnableEvents = True
    Next cel
End If
End Sub


donc si il est possible d'ajouter à ce code encore celui que je demande...se serai tip top !!! ^^

merci :)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
voilà mon fichier :

http://www.cijoint.fr/cjlink.php?file=cj200908/cijgBJpsP4.xls

il s'agit bien donc de la cellule en bas qui est en rouge ;)

merci encor
Messages postés
143
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
16 octobre 2011
21
https://www.cjoint.com/?inpTGRkl6n

Cela marche, il suffit de lancer la macro (Outils/Macro/Macros... "Macro1" Exécuter)
Mais, attention ! il faut avant sélectionner toute la page "utile" et faire Format Cellule et décocher fusionner cellule ...
Sinon il formate toutes les tailles de colonnes de la même façon que les deux concernés, car elles sont toutes liées ;)

à essayer ! me dire si ok !
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
2x oupssss...
1. je suis sous 2007
et 2. c'est la hauteur qu'il faut modifier

désolé pour cet oubli ...

merci sinon pour ton aide...on s'approche on s'approche ! =D

(et juste...vu que les personnes qui vont utiliser ce classeur, sont enocre plus nuls que moi en excel...sisi sa existe XD...serait-il possible d'automatiser sa de la même manière que les maj. de l'autre macro (donc on écrit, pi POF ! sa se fait comme de la magie...tout seul ! ?!?)

merci :)
Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Re,

Dans le code feuille Ordre d'expédition (clic droit sur l'onglet de cette feuille et visualiser le code) intercale avant End Sub ma ligne comme ci-dessous et ta cellule E60 fusionnée avec F60 sera ajusté automatiquement en hauteur

End If
[E60].Rows.EntireRow.AutoFit
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
143
Date d'inscription
mardi 11 août 2009
Statut
Membre
Dernière intervention
16 octobre 2011
21
oui dans ce sens, c'est franchement plus simple
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
donc cela devrai apparaitre sous cette forme ?!?

Option Explicit

Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(sel, Union(Range("C12:C16"), Range("E15"), Range("G33"), Range("G26"))) Is Nothing Then
    Dim cel As Range
    For Each cel In sel
        Application.EnableEvents = False
        cel.Value = UCase(cel.Value)
        Application.EnableEvents = True
    Next cel
End If
End If
[E60].Rows.EntireRow.AutoFit
End Sub
End Sub


...essayé, mais ensuite plein de fenetre s'ouvre...comme quoi ya un souci avec le IF, pi après je l'enlève, pi ya un soucis avec autre chose...o.o'
merci à+
Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Re,

tu as ajouté un end if et un end sub de trop

voila le code complet, bien que je ne l'aurai pas écrit tout à fait comme toi

Option Explicit

Private Sub Worksheet_Change(ByVal sel As Range)
If Not Intersect(sel, Union(Range("C12:C16"), Range("E15"), Range("G33"), Range("G26"))) Is Nothing Then
Dim cel As Range
For Each cel In sel
Application.EnableEvents = False
cel.Value = UCase(cel.Value)
Application.EnableEvents = True
Next cel
End If
[E60].Rows.EntireRow.AutoFit
End Sub

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
Re,

donc le code est bien :

Option Explicit

Private Sub Worksheet_Change(ByVal sel As Range)
    If Not Intersect(sel, Union(Range("C12:C16"), Range("E15"), Range("G33"), Range("G26"))) Is Nothing Then
    Dim cel As Range
    For Each cel In sel
    Application.EnableEvents = False
    cel.Value = UCase(cel.Value)
    Application.EnableEvents = True
    Next cel
End If
    [E60].Rows.EntireRow.AutoFit
End Sub


est-ce que je doit faire une manipulation après celle-ci ?!? ...par ce qu'elle n'a pas l'air de fonctionner...

merci encor =D ++
Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Re,

réduit la hauteur de la ligne 60 à 4,50 par exemple et saisis une valeur dans ton tableau, le hauteur de ligne 60 s'ajustera automatiquement

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
Rien à y faire !!! maudit excel !!! ^^

je met bien ce code là :

Option Explicit

Private Sub Worksheet_Change(ByVal sel As Range)
    If Not Intersect(sel, Union(Range("C12:C16"), Range("E15"), Range("G33"), Range("G26"))) Is Nothing Then
    Dim cel As Range
    For Each cel In sel
    Application.EnableEvents = False
    cel.Value = UCase(cel.Value)
    Application.EnableEvents = True
    Next cel
End If
    [E60].Rows.EntireRow.AutoFit
End Sub


j'ai réduit la hauteur à 4.5 ( = 6 pixel) ...mais rien à y faire !!!

mistère mistère...

merci encore, et désolé de ne pas t'avoir répondu plus tôt, mais le fichier que je travail est au boulot, donc voilà ! ^^....et à la maison j'ai pas excel (et oui, sa existe encore !!! ^^)
Messages postés
17131
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
3 juillet 2020
4 114
Re,

tu reduits bien la ligne 60, chez moi aucun problème, je réduis cette ligne en suite une saisie ou doble clic sur ton fichier et la hauteur ligne s'ajuste automatiquement au contenu de la cellule E60

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Messages postés
232
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
17
be ?!?...je sais pas...j'ai même essayé de rouvrir le fichier après...mais la ligne reste à la même hauteur...

HA ! je viens de refaire le test, mais enfaite, la ligne ne s'ajuste "que" sur 1 ligne (en français, il n'y à qu'une ligne de texte qui apparai, donc si mon texte est sur plus que 1 lignes...on ne vera que la 1ère) j'ai mis à 4.5...pi elle s'ajuste 12.75 ...pas assez pour voir les lignes de dessous...

merci à++