Ajuster la hauteur de lignes malgré un tri

Bonjour,

Mes lignes sont ajustées automatiquement en hauteur quand je saisis du texte sur plusieurs lignes.

Mais quand je fais un tri, la hauteur des lignes ne se réajustent pas.

Avez-vous une solution, svp ?

Merci :-))))

à +

Bonjour,

à mon niveau (petit), je ne crois pas que le tri d'un tableau ou d'une plage de cellule déclenche "un évènement" qu'on pourrait intercepter afin d'associer à ce tri une mise "à hauteur" des lignes.

Par contre si votre tri est redondant sur une colonne par exemple, vous pouvez vous créer un bouton qui lance un code qui lui lance le tri voulu ainsi que la mise en hauteur des lignes.

Ou bien alors la mise en hauteur des lignes se fait lors du changement d'une valeur, du recalcul de la feuille ou de la modification de sélection de cellule et là, oui, il y a des évènements détectables.

@ bientôt

LouReeD

MErci LouReeD, après un tri, je crois donc que je ferai une sélection de tableau pour faire un clic dans les lignes pour refaire une hauteur de ligne automatique ;)

à bientôt :-))))))))))))))))

Bonsoir,

en cherchant on trouve, merci internet et ses moteurs de recherche !
Voici un fichier qui lance un code VBA lors d'un tri, à vérifier si ce code s'exécute avant le tri ou après, mais je dirais après...

Le fichier :

@ bientôt

LouReeD

J'oubliais, l'astuce est en O1, une somme sur une des colonnes du tableau qui doit subir le tri, ce qui fait que cela lance l'évènement Calculate de la feuille...

@ bientôt

LouReeD

Super et merci beaucoup LouReeD,

J'essayerai mais je ne sais pas comment l'intégrer à mon tableau puisque ces hauteurs de lignes sont conditionnées par ma colonne "L".

Merci

Bonne journée :-))))))))))))))))

re, salut LouReeD,

dans vos 2 macros vous ajoutez cette ligne ".Rng.EntireRow.AutoFit" entre l' "Apply" et le "End With"

          .SortMethod = xlPinYin
          .Apply
          .Rng.EntireRow.AutoFit   '<<<<<<<<<<<<<<<<<
     End With

Salut LouReeD et merci,

J'ai essayé de copier/coller, ça ne marche pas car je ne sais pas réellement à quel endroit il faut placer tes lignes dans mes macros :-(((

Encore merci

à bientôt :-))))))))

Bonsoir,

avec le fichier c'est plus simple !

Vu que vous avez des boutons pour filtrer, alors j'ai juste ajouté deux lignes de codes :
la première pour arrêter la mise à jour de l'écran, cela évite que ce dernier scintille, c'est plus joli.
la deuxième c'est "l'autofit" ciblant les lignes de données de votre plage de cellules, c'est à dire de la ligne 3 à la ligne 70.
nul besoin de l'astuce car vous faites les tris avec des boutons. le fichier :

Si toutes fois vous décidiez de supprimer ces boutons et de "jouer" avec les filtres et tri disponible sur votre tableau, vu que vous avez des formules en lignes 70, il vous suffira alors de mettre le code d'autofit dans l'évènement Calculate de la feuille : un tri, modification de la positions des données, recalcul des formules donc lancement de Calculate, donc ajustement de la hauteur des lignes :

Private Sub Worksheet_Calculate()
    Activesheet.Rows("3:70").AutoFit
End Sub

@ bientôt

LouReeD

Bonjour et merci encore LouReeD,

J'ai à peu près compris mais on fait comment pour mettre le code d'autofit dans l'évènement Calculate de la feuille et à quel endroit précisément ?

Merci

Bonne journée :-))))

En fait j'ai réussi grâce à toi :-))))))

Ca marche !!!!!!

Dans les colonnes F à K, si je peux un tout petit peu abuser de ta gentillesse, serait-il possible de transformer un chiffre en "cellule vide" si on double clic sur un chiffre existant ?

Si oui, prenons un exemple :

Dans une ligne, j'ai enregistré le 1, le 2, le 3 et le 4. Je veux effacer le numéro "2" en double cliquant dessus et du coup le "3" devient automatiquement "2" et le "4" devient "3".

Qu'en penses-tu ?

Merci

Bonne journée :-))))))

à +

Bonjour,

voici un code qui fonctionne :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim LeMax As Integer, Supr As Integer
    If Not Intersect(Target, Range("F3:K67")) Is Nothing Then
        Cancel = True
        If Target = "" Then
            LeMax = Application.WorksheetFunction.Max(Range("F" & Target.Row & ":K" & Target.Row))
            Cells(Target.Row, Target.Column) = LeMax + 1
        Else
            Supr = Cells(Target.Row, Target.Column).Value
            Cells(Target.Row, Target.Column) = ""
            For i = 1 To 6
                If Cells(Target.Row, 5 + i).Value > Supr And 5 + i <> Target.Column Then Cells(Target.Row, 5 + i).Value = Cells(Target.Row, 5 + i).Value - 1
            Next i
        End If
    End If
End Sub

@ bientôt

LouReeD

MAgnifique !!!!!!!!

MErci beaucoup à toi !!!!!!!!!!!!!!!!!!!!!!

Bonsoir,

merci de votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "ajuster hauteur lignes tri"