Microsoft 365 Peut-on insérer un code EntireRow.AutoFit dans une Function?

Englobe

XLDnaute Nouveau
Bonjour,
J'ai une fonction dont je désire que la hauteur de la cellule A4 s'ajuste automatiquement suite ;a l'ajout ou retrait de données dans celle-ci.
Est-il possible de mettre un code à même la Function?

VB:
Function RenvoiResultat(Choix As Variant, Plage As Variant)
    Application.Volatile
    c = Choix.Interior.ColorIndex
    For Each cell In Plage
        If Range(cell.Address).Interior.ColorIndex = c Then RenvoiResultat = RenvoiResultat & Chr(10) & Range(cell.Address)
    Next cell
    RenvoiResultat = Mid(RenvoiResultat, 2)

    ' Ajouter ici un code pour que la ligne 4 s'ajuste automatiquement selon les contenus?
End Function
 

Pièces jointes

  • test1.xlsm
    19.7 KB · Affichages: 2
Solution
Bonjour.
En principe une fonction invoquée depuis une formule de cellule ne peut opérer aucune sorte de modification du classeur. Elle n'a pour rôle admis que de renvoyer une valeur qui sera adoptée comme étant celle de la cellule qui la porte. Cependant tant qu'elle n'essaye pas d'y jardiner à l'aide de méthodes de la bibliothèque Excel elle peut quand même faire plein de choses. Elle peut en particulier laisser une consigne dans une Collection VBA qui sera analysée et appliquée par une Sub Workbook_SheetCalculate du module ThisWorkbook, vu qu'elle s'exécutera après et donc en dehors de la phase de calcul d'Excel …
Merci Dranreb,
J'ai ma réponse à ma recherche.
Je vais considérer la macro comme solution.
Bonne journée

Englobe

XLDnaute Nouveau
Bonjour,
Ça ne fonctionne pas. Suite à un changement de couleur dans la feuille, la cellule qui contient la fonction ne s'ajuste pas.

VB:
Function RenvoiResultat(Choix As Variant, Plage As Variant)
    Application.Volatile
    c = Choix.Interior.ColorIndex
    For Each cell In Plage
        If Range(cell.Address).Interior.ColorIndex = c Then RenvoiResultat = RenvoiResultat & Chr(10) & Range(cell.Address)
        
    Next cell
    RenvoiResultat = Mid(RenvoiResultat, 2)
    Range("A4").WrapText = True
    ' Ajouter ici un code pour que la ligne 5 s'ajuste automatiquement selon les contenus?
End Function

Je continu à chercher. 🧐
Merci à toi
 

Englobe

XLDnaute Nouveau
Bonjour,
C'est lorsque que je me positionne dans A4 et que je fais un ENTER que B4 s'ajuste en hauteur. Mais ça ne fonctionne pas à partir de la Function avec l'ajout de Range("A4").WrapText = True ni pour Range("B4").WrapText = True.
Merci
 

Englobe

XLDnaute Nouveau
Bonjour,
C'est lorsque que je me positionne dans A4 et que je fais un ENTER que B4 s'ajuste en hauteur. Mais ça ne fonctionne pas à partir de la Function avec l'ajout de Range("A4").WrapText = True ni pour Range("B4").WrapText = True.
Merci
Bonjour,
J'ai une solution de sylvanu. Ce sera par contre avec macro.
VB:
Sub Remplit()
DL = [A65500].End(xlUp).Row
Set Plage = Range("A13:A" & DL)
For L = 4 To 9
    Cells(L, "B") = RenvoiResultat(Cells(L, "A"), Plage)
    Cells(L, "C") = CompterCouleur(Plage, Cells(L, "A"))
Next L
Rows("4:9").EntireRow.AutoFit
End Sub

Je continu tout de même de mon côté pour trouver un code pour une fonction à savoir si ç'est possible.
Merci beucoup
 

Dranreb

XLDnaute Barbatruc
Bonjour.
En principe une fonction invoquée depuis une formule de cellule ne peut opérer aucune sorte de modification du classeur. Elle n'a pour rôle admis que de renvoyer une valeur qui sera adoptée comme étant celle de la cellule qui la porte. Cependant tant qu'elle n'essaye pas d'y jardiner à l'aide de méthodes de la bibliothèque Excel elle peut quand même faire plein de choses. Elle peut en particulier laisser une consigne dans une Collection VBA qui sera analysée et appliquée par une Sub Workbook_SheetCalculate du module ThisWorkbook, vu qu'elle s'exécutera après et donc en dehors de la phase de calcul d'Excel …
 

Englobe

XLDnaute Nouveau
Bonjour.
En principe une fonction invoquée depuis une formule de cellule ne peut opérer aucune sorte de modification du classeur. Elle n'a pour rôle admis que de renvoyer une valeur qui sera adoptée comme étant celle de la cellule qui la porte. Cependant tant qu'elle n'essaye pas d'y jardiner à l'aide de méthodes de la bibliothèque Excel elle peut quand même faire plein de choses. Elle peut en particulier laisser une consigne dans une Collection VBA qui sera analysée et appliquée par une Sub Workbook_SheetCalculate du module ThisWorkbook, vu qu'elle s'exécutera après et donc en dehors de la phase de calcul d'Excel …
Merci Dranreb,
J'ai ma réponse à ma recherche.
Je vais considérer la macro comme solution.
Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
314 704
Messages
2 112 063
Membres
111 410
dernier inscrit
yomeiome