Renvoie à la ligne d'une formule

Bonjour,

J'avais été clair dans mon post :

Travailler sur une copie. Jai eu la flemme de faire une partie restauration alors que tu peux avoir l'original sous le coude.

Si tu ne l'as pas fait tu n'as plus qu'à revalider toutes tes formules après leur avoir remis le format voulu.

eric

Bonjour,

J'avais été clair dans mon post :

Travailler sur une copie. Jai eu la flemme de faire une partie restauration alors que tu peux avoir l'original sous le coude.

Si tu ne l'as pas fait tu n'as plus qu'à revalider toutes tes formules après leur avoir remis le format voulu.

eric

ok, j'étais encore en phase de test, donc mes fichiers ne sont pas impactés, j'avais oublié l'histoire de copie, , ce qui rend cette solution non applicable dans mon cas, si j'imprime les formules de la copie, je valide et fait valider la copie, et non le fichier d'origine, donc non recevable, il faut que je puisse rester sur le fichier d'origine...

Rhalala, quand on n'a pas de tête...

Plutôt que de devoir restaurer, une version qui travaille sur une copie de ta feuille :

Sub Formules()
    Dim l As Long
    l = Application.InputBox("Cette macro mettra le texte des formules" & vbLf & "Largeur des colonnes ?", "Largeur", 20, , , , , 1)
    If l > 0 Then affFormule ActiveSheet, l
End Sub

Sub affFormule(sh As Worksheet, l As Long)
    Dim sh2 As Worksheet, pl As Range, tmp
    If sh.Cells.SpecialCells(xlCellTypeFormulas) Is Nothing Then Exit Sub
    sh.Copy after:=ActiveSheet
    Set sh2 = ActiveSheet
    On Error Resume Next
    tmp = Sheets(sh.Name & " (formules)").Index
'    Application.DisplayAlerts = False
    If tmp Then Sheets(sh.Name & " (formules)").Delete
'    Application.DisplayAlerts = True
    sh2.Name = sh.Name & " (formules)"
    On Error GoTo 0
    Set pl = sh2.Cells.SpecialCells(xlCellTypeFormulas)
    With pl
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .NumberFormat = "@"
        .Value = .FormulaLocal
        .EntireColumn.ColumnWidth = l
    End With
End Sub

Si la copie 'xxxx (formules)' est existante et que tu refuses sa suppression, la feuille crée s'appelera xxx(1), puis xxxx(2) etc

Si tu préfères sa suppression d'office, enlève les apostrophes au début des 2 lignes ' Application.DisplayAlerts = pour les activer.

Si avec ça tu fais encore des bourdes, je ne peux plus rien faire

eric

1classeur3.xlsm (20.41 Ko)

Rhalala, quand on n'a pas de tête...

Plutôt que de devoir restaurer, une version qui travaille sur une copie de ta feuille :

Sub Formules()
    Dim l As Long
    l = Application.InputBox("Cette macro mettra le texte des formules" & vbLf & "Largeur des colonnes ?", "Largeur", 20, , , , , 1)
    If l > 0 Then affFormule ActiveSheet, l
End Sub

Sub affFormule(sh As Worksheet, l As Long)
    Dim sh2 As Worksheet, pl As Range, tmp
    If sh.Cells.SpecialCells(xlCellTypeFormulas) Is Nothing Then Exit Sub
    sh.Copy after:=ActiveSheet
    Set sh2 = ActiveSheet
    On Error Resume Next
    tmp = Sheets(sh.Name & " (formules)").Index
'    Application.DisplayAlerts = False
    If tmp Then Sheets(sh.Name & " (formules)").Delete
'    Application.DisplayAlerts = True
    sh2.Name = sh.Name & " (formules)"
    On Error GoTo 0
    Set pl = sh2.Cells.SpecialCells(xlCellTypeFormulas)
    With pl
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .NumberFormat = "@"
        .Value = .FormulaLocal
        .EntireColumn.ColumnWidth = l
    End With
End Sub

Si la copie 'xxxx (formules)' est existante et que tu refuses sa suppression, la feuille crée s'appelera xxx(1), puis xxxx(2) etc

Si tu préfères sa suppression d'office, enlève les apostrophes au début des 2 lignes ' Application.DisplayAlerts = pour les activer.

Si avec ça tu fais encore des bourdes, je ne peux plus rien faire

eric

Après reflexion, je pense que je ne peux pas appliquer cette méthode, même si elle fonctionne, cela crée une copie, et je dois rester sur la feuille d'origine, dommage qu'il n'y ai pas de solution plus simple....j'imaginais qu'une solution beaucoup plus simple existait, je vais devoir attendre de passer sous la version d 'exel suivante...

C'est faisable mais rester sur la feuille t'obligera à prendre 2 cellules, une pour la formule et une pour le résultat.

Avec les difficultés de mise en page qui en résultera...

C'est faisable mais rester sur la feuille t'obligera à prendre 2 cellules, une pour la formule et une pour le résultat.

Avec les difficultés de mise en page qui en résultera...

Je pense qu'on a fait le tour du problème, je vais clôturer le sujet.

Des solutions ont été trouvées, mais ne sont pas applicables dans mon cas, je ne pense pas qu'il y en ait d'autres...

Ou c'est trop chronophage, il faut être réaliste, ou non applicable pour des raisons de protocole interne...

Donc, en ce qui concerne la vérification des formules, et bien si les formules ne sont pas lisibles, et ben le coco en question prendra sa calculette!

J'estime avoir passé assez de temps là dessus.

Merci pour la solution macro, je la garde dans un coin, mais je ne pense pas avoir le droit de l'utiliser.

Bonne fin de journée!

Faut voir le coté positif.

Faire contrôler les formules sur papier est créateur d'emploi.

Quand tu en as qq centaines dont certaines de plusieurs dizaines de caractères ça doit occuper un moment

Je ne vois pas quels contrôles sérieux, sans le classeur, peuvent être effectués de cette manière mais bon...

eric

Rechercher des sujets similaires à "renvoie ligne formule"