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,
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
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