Lister formules d'un onglet

roby

XLDnaute Occasionnel
Bonjour le forum

Existe-t-il une macro qui pourrait rapatrier (lister) toutes les formules existantes d'une feuille vers un nouvel onglet ?

Merci d'avance Roby
 

roby

XLDnaute Occasionnel
Re : Lister formules d'un onglet

Re

ci-joint un fichier exemple, avec "Formules" feuille ou les formules des différents onglet sont rapatriées.

merci d'avance
 

Pièces jointes

  • Stats Colmar (2012) - Copie.zip
    77.1 KB · Affichages: 38

STephane

XLDnaute Occasionnel
Re : Lister formules d'un onglet

bonsoir,

Il y a une méthode faisant appel une fonction propre à Excel 4 et à la création de noms.
C'est également possible avec le langage VBA.
J'ai employé les 2 dans le fichier ci-joint ; je conseille la méthode VBA, trouvant l'usage des noms et de formules Excel 4 hasardeux.

bonne réception
 

Pièces jointes

  • Stats Colmar (2012) - xld01022012.xlsm
    94.8 KB · Affichages: 70

STephane

XLDnaute Occasionnel
Re : Lister formules d'un onglet

Les cellules D4 à D9 de ta feuille "Formules" contiennent une première méthode utilisant le nom "LF".
- Dans les versions d'Excel antérieures à 2007, les noms se défissent dans le menu "Insertion", sous-menu "Nom", commande "définir".
- Dans les versions postérieures à 2007, la commande "Définir nom" est disponible dans le ruban, section "Formules".
- Le nom "LF" a été défini à l'aide d'une formule qui utilise la fonction LIRE.CELLULE pour retourner la formule d'une auter cellule qui elle a été définie avec la formule "INDIRECT".
- Formule du nom LF =LIRE.CELLULE(6;INDIRECT(Formules!$B7&"!"&Formules!$C7))
- Pour utiliser ce nom, il suffit d'écrire =LF dansune cellule de la colonne D.

La deuxième méthode n'utilise pas un nom mais une fonction VBA personnalisée dont il faut écrire le code dans un module de code.
Function XLFormula(rg As Range)
XLFormula = rg.Formula
End Function
Cette fonction s'utilise dans une formule et la référence à une autre cellule doit lui être passée. Tu peux donc écrire :
=XLFormula(A1).

Pour ton besoin, tu peux écrire
=XLFormula(INDIRECT(B10&"!"&C10)) où B10 = SAISE et C10 = C37
 

roby

XLDnaute Occasionnel
Re : Lister formules d'un onglet

Re

Merci pour tes explications claires, je n'avais pas pensé comme ça.
Pourrait-on envisager de mettre un code sous un bouton qui fasse la recherche des cellules qui possèdent une formule et incrémenter une liste dans une feuille dédiée.

bonne soirée à tous Roby
 

Efgé

XLDnaute Barbatruc
Re : Lister formules d'un onglet

Bonjour roby, STephane, Rachid_0661,
Une proposition :
VB:
Private Sub CommandButton1_Click()
Dim F As Worksheet, C As Range, X&
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Sheets("Formules")
    .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, 2)).ClearContents
    For Each F In Worksheets
        If F.Name <> .Name Then
            On Error Resume Next
            For Each C In F.Cells.SpecialCells(xlCellTypeFormulas)
                If Left(C.Formula, 1) = "=" Then
                    X = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                    .Cells(X, 1) = F.Name
                    .Cells(X, 2) = C.Address
                    .Cells(X, 3) = "'" & C.Formula
                End If
            Next C
            On Error GoTo 0
        End If
    Next F
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Traitement terminé", , "Compte-rendu"
End Sub
Cordialement
 

Pièces jointes

  • Stats_Colmar_(2012)(3).xlsm
    58.1 KB · Affichages: 80

Efgé

XLDnaute Barbatruc
Re : Lister formules d'un onglet

Re à tous, Bonjour 00 :):),
Comme je n'aime pas utiliser "on error resume next" sans gestion d'erreur, je propose une autre formulation du même code.
J'ai aussi essayé de passer par un tableau pour aller plus vite mais les 1040 caractères :rolleyes: de la cellule Saisie!J10 posent problème...

VB:
Private Sub CommandButton1_Click()
Dim F As Worksheet, C As Range, CTest As Range, X&
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Sheets("Formules")
    .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, 2)).ClearContents
    For Each F In Worksheets
        If F.Name <> .Name Then
            Set CTest = F.Cells.Find("=", , xlFormulas)
            If Not CTest Is Nothing Then
                For Each C In F.Cells.SpecialCells(xlCellTypeFormulas)
                    If Left(C.Formula, 1) = "=" Then
                        X = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                        .Cells(X, 1) = F.Name
                        .Cells(X, 2) = C.Address
                        .Cells(X, 3) = "'" & C.Formula
                    End If
                Next C
                Set CTest = Nothing
            End If
        End If
    Next F
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Traitement terminé", , "Compte-rendu"
End Sub

roby, la prochaine foi, enlève les codes WorbookOpen, c'est préférable...

Cordialement
 

Pièces jointes

  • Stats_Colmar_(2012)(4).xlsm
    54.2 KB · Affichages: 82

Efgé

XLDnaute Barbatruc
Re : Lister formules d'un onglet

Re, Bonjour karakoman1n
Le transport dans un autre classeur est prévu :D, il suffit de le mettre dans une sub classique.. le seul prérequis est soit d'avoir un feuille nommée Formules, soit de modifier la ligne
VB:
With Sheets("Formules")
avec le bon nom

;) :eek: J'ai l'impression qu'il plait bien mon petit bout de code :eek: ;)

Cordialement

[Edit] Encore plus simple (méthode testée) : déplacer la feuille "Formules" dans le classeur a traiter
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 354
Messages
2 087 545
Membres
103 584
dernier inscrit
Serka