Passage à l'euro

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 657 fois - Téléchargée 47 fois

Contenu du snippet

Ce module xla permet de passer à l'euro une zone que vous aurez préalablement sélectionnée.
Sélectioner la zone à passer à l'euro et cliquer sur le petit cochon dans le menu...
Plusieurs possibilités :
- s'il y a une valeur : "1200" passera en "=1200/6.55957"
- s'il y a une formule qui ne contient "rien de spécial" : "=500+(200*45)/32" passera en "=(500+(200*45)/32)/6.55957
- s'il y a une formule "un peu particulière" comme une somme, ou une référence à une autre cellule, il ne fait rien et indique un message d'erreur qu'il peut être bon d'enlever lorsque les zones sont grandes et qu'il y a beaucoup de formule non modifiable.

Source / Exemple :


Sub EURO()
'parcourt la sélection effectuée et applique la formule SFORMULE
For Each c In Selection.Cells
  Ligne = c.Row
  Colonne = c.Column
  SFormule (Ligne), (Colonne)
Next
End Sub

Sub SFormule(Ligne As Integer, Colonne As Integer)
Dim a$, l$, i%
'transforme la valeur en EURO
'Plusieurs possibilités :
'- s'il y a une valeur : "1200" passera en "=1200/6.55957"
'- s'il y a une formule qui ne contient "rien de spécial" : "=500+(200*45)/32" passera en "=(500+(200*45)/32)/6.55957
'- s'il y a une formule "un peu particulière" comme une somme, ou une référence à une autre cellule, il ne fait rien et indique un message d'erreur qu'il peut être bon d'enlever lorsque les zones sont grandes et qu'il y a beaucoup de formule non modifiable.
 
 'prend la formule
 a$ = Cells(Ligne, Colonne).FormulaR1C1
 'si il y a une forumle
 If Trim(a$) <> "" Then
  Dim booOK As Boolean
  If Mid$(a$, 1, 1) = "=" Then ' si c'est une forumle, la valeur commence par un "="
    booOK = True
    For i% = 2 To Len(a$) 'on parcourt la formule
      l$ = Mid$(a$, i%, 1) 'et on cherche caractère par caractère
      If Not (IsNumeric(l$) Or l$ = "," Or l$ = "." Or l$ = "+" Or l$ = "-" Or l$ = "*" Or l$ = "/" Or l$ = "(" Or l$ = ")") Then
        booOK = False 'si on trouve quelquechose indiquant qu'il n'y a pas que du numérique
        i% = Len(a$) 'si c'est le cas, on passe le flag à faux et on sort de la boucle
      End If
    Next i%
    If Not booOK Then 'si le flag n'est pas passé à faux (si ya autre chose que du numérique)
      a$ = "ERREUR : " & Ligne & ", " & Colonne & vbCrLf & "=" & Mid$(a$, 2) & ""
      MsgBox a$ ' on indique un message
    Else 's'il n'y a que du numérique
      a$ = "=(" & Mid$(a$, 2) & ")/6.55957" 'on convertit tout simplement "=(XXXX)/6.55957"
      Cells(Ligne, Colonne).FormulaR1C1 = a$ '(XXXX étant l'ancienne formule)
    End If
  Else 'si ya pas de forumule (le premier caractère n'est pas "=")
    a$ = "=" + a$ + "/6.55957" 'on fait "=X/6.55957", X étant la valeur de la cellule
    Cells(Ligne, Colonne).FormulaR1C1 = a$ 'on place
  End If
 End If
End Sub

Conclusion :


Si vous avez des problèmes pour passer à l'EURO, des moulinettes à faire sur un paquet de programmes ou d'autres trucs en excel, vous pouvez me contacter, je suis un spécialiste !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.