Collage spécial formule dans un éditeur de texte

Guy_M

XLDnaute Occasionnel
Bonjour,

J'ai besoin de modifier la formule de plusieurs cellules : insérer une fonction dans la cellule (mettre INDIRECT autour de certaines références pour être plus précis).

Je ne peux pas le faire avec un "Remplacer" car Excel n'accepte de remplacer dans une formule que si la formule résultante est juste et que Rechercher/Remplacer ne gère pas les expressions régulières.

Dans une éditeur de texte serait très simple :
  • Copier les cellules
  • Coller les formules dans l'éditeur
  • Faire les modifications
  • Copier le texte
  • Coller dans Excel

Le souci est qu'en dehors d'Excel le collage spécial/formule n'existe pas, auriez-vous une solution ?

Par avance, je vous remercie de vos réponses
Guy
 

Efgé

XLDnaute Barbatruc
Re : Collage spécial formule dans un éditeur de texte

Bonjour Guy_M,
J'avais fait qualque chose dans ce style.
Je te laisse le classeur complet.
Le code va créer un fichier Test appelé "Efge_Test.txt" sur le bureau.
Tu retrouvera toutes les formules de chaque onglet du classeur dans le fichier texte ainsi que sur la feuille Formules.
Si cela te vas, il suffit de déplacer l'onglet Formules dans ton classeur à toi.
Les onglets du classeur ne doivent pas être protégés.

VB:
Private Sub CommandButton1_Click()
Dim F As Worksheet, C As Range, CTest As Range, X&
Dim Chemin As String
Chemin = CreateObject("WScript.Shell").specialFolders("Desktop")
Open Chemin & "\Efge_Test.txt" For Output As #1
    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
                            Print #1, C.Formula
                            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
Close #1
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Traitement terminé", , "Compte-rendu"
End Sub

Cordialement
 

Pièces jointes

  • Export_Formules.xlsm
    54.3 KB · Affichages: 45

Efgé

XLDnaute Barbatruc
Re : Collage spécial formule dans un éditeur de texte

Re
Bonsoir Pierrot :)
J'ai oublié :
Pour avoir les formules en Français il faut utiliser
VB:
Print #1, C.FormulaLocal
à la place de
VB:
Print #1, C.Formula
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p