Valeur Absolue à Relative sur une plage de données

  • Initiateur de la discussion Initiateur de la discussion La dugue
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

La dugue

XLDnaute Nouveau
Bonjour à tous et merci pour l'aide que vous avez pu m'apporter précédement en tant que lecteur attentif de certaine de vos discussions.

Etant un garçon aimant bien passer sous les radars (on ne commence pas avec les jeux de mots hein...), je n'avais, j'usqu'à présent, pas eu le besoin de m'inscrire pour poster. Mais comme chacun le sait, "le besoin est la mère de l'invention", dans ce cas je dirais plutôt le père de ma démarche...

(Promis je ne ferait pas une tartine à chaque fois, mais je me devais de marquer mon premier post et de saluer tout le monde. Ceci étant fait.)

J'ai donc un VRAI (lol) problème :

Je souhaiterai faire passer toutes les valeurs d'une plage de données (composées de formules très simples : additions) de l'état de valeurs absolues à valeurs relatives et réciproquement.

Bien sûr avant de demander j'ai cherché... Et j'ai trouvé un gentil contributeur sur un autre site ayant déjà répondu à cette question via un code VBA sur ce site : Mettre des $ automatiquement à toutes les formules? : Forum Excel

Le fait est que cela fonctionne très bien.

Là ou le problème apparait pour moi est que ce code n'est pas fait pour être appliqué à des formules contenant des références externes. Dans mon cas à d'autre onglets du même classeur.
Je crois que Excel est perturbé par les réfèrences du style "Feuil1!" lors de l'execution.

Et comme je suis un peintre en programmation VBA et que le temps me manque pour en apprendre toute les subtilités d'ici deux semaines. Je sollicite votre aide pour transformer ce code :

Sub Relatif_To_Absolu_Ou_Vice_Versa()
Dim c As Range
Dim LaFormule As String
For Each c In Selection
LaFormule = c.Formula
If LaFormule Like "*$*" Then
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlRelative)
Else
c.Value = Application.ConvertFormula _
(Formula:=LaFormule, fromReferenceStyle:=xlA1, _
toReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Next c


End Sub

Ou m'en proposer un autre.

Merci d'avance pour votre aide.
 

Pièces jointes

Re : Valeur Absolue à Relative sur une plage de données

Bonjour La Dugue

Et bienvenue sur XLD

Un essai:
Attention!! Valable uniquement sur le type de formule de ton fichier ( avec ! )

Code:
Sub test()
For Each c In Selection
x = c.Formula
If InStr(x, "$") = 0 Then
x = Replace(x, "!", "!$")
For n = Len(x) To 1 Step -1
  If Mid(x, n, 1) = "$" Then
    For m = n + 1 To n + 6
      If IsNumeric(Mid(x, m, 1)) Then
        x = Left(x, m - 1) & "$" & Mid(x, m)
        c.Formula = x
        Exit For
      End If
    Next
  End If
Next
Else
x = Replace(x, "$", "")
c.Formula = x
End If
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
368
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
268
Réponses
10
Affichages
369
Retour