IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de modification de formules Excel avec VBA.


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Points : 15
    Points
    15
    Par défaut Problème de modification de formules Excel avec VBA.
    Bonjour à tous,

    J'ai tout une plage de cellules qui contiennent des formules.

    Ce que je voudrais c'est avec une macro, rajouter la fonction arrondi dans la cellule tout en gardant la formule.

    Exemple avec une cellule au hasard :

    avant --> A4 = L2+ 2* L3
    après --> A4 = arrondi(L2+2*L3;0)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub AvecArrondi()
        Dim cellule As Range
        Dim temp As String
        For Each cellule In Selection
            temp = Right(cellule.formula, Len(cellule.Formula) - 1)
            cellule.Value = "=arrondi" & temp & Chr(40) & ";0" & Chr(41)
        Next
    End Sub
    1) Ma boucle parcourt toutes les cellules de la plage que j'ai sélectionnée.

    2) Pour chaque cellule on prend la valeur de la formule en enlevant le "=" et on stocke donc la formule sans le "égale" dans la variable temp.

    Avec l'exemple de la cellule A4 d'en haut on obtient donc une variable temp qui est de type String avec "L2+ 2* L3".

    3)On rajoute la fonction "arrondi" avec les parenthèses chr(40) et chr(41), tout ça en concaténant.

    Hé bien ça ne marche pas, erreur 1004, mais vraiment je comprends pas, je serais vraiment curieux de comprendre ce qui fait foirer la macro.

    Merci d'avance de votre aide.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim vCel As Range, Plage As Range
     
    Set Plage = Range("B1:B10") ' à adapter
    For Each vCel In Plage
        vCel.Formula = "=Round(" & Mid(vCel.Formula, 2) & ",2)"
    Next vCel
    ou pour vérifier si la cellule contient une formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim vCel As Range, Plage As Range
     
    Set Plage = Range("B1:B10") ' à adapter
    For Each vCel In Plage
        If Left(vCel.Formula, 1) = "=" Then vCel.Formula = "=Round(" & Mid(vCel.Formula, 2) & ",2)"
    Next vCel

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Merci Mercatog, c'est exactement ce que je voulais.

    Par contre est-ce que tu aurai compris ce qui foire dans ma dernière ligne de code, parce que ça je me suis pris la tête et je vois pas le problème ? étant donnée que je concatène que des types string je vois pas ce qui se passe, pourquoi ça fait cette erreur

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    cellule.formula et non cellule.value
    en plus, cellule.formulalocal et cellule.formula sont différentes (arrondi, à la place de round

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Ok merci pour l'explication,

    par contre ce que je comprends pas dans ton bout de code comment Excel fait pour comprendre que le round faut le traduire en français et le foutre dans la page, normalement quand c'est entre "" on touche pas, c'est ça que je pige pas, moi je pensais qu'il mettait tel quel, du coup je comprends plus rien.

    C'est la dernière question après j'arrête de t'embêter


    PS : t'es info informaticien ? je me suis toujours demandé comment les mecs sur ce forum s'y connaissaient là dedans, en entreprise je vois jamais personne qui connaît...

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.formula="=round(X,2)"
    sera traduite en français
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.formulalocal="=arrondi(X,2)"
    si tu as Office en français

Discussions similaires

  1. Problème de formule excel dans vba
    Par Oreo_ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2013, 16h49
  2. [XL-2007] Recherche et modification de formules excel via vba
    Par beniboy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/12/2012, 11h25
  3. [XL-2007] Problème traduction formule excel en VBA
    Par laduche31 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/12/2011, 10h16
  4. Problème pour réinitialiser une feuille graphique d'excel avec VBA
    Par karatetiger76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2011, 22h51
  5. [XL-2003] Problème de conversion formule excel -> Macro VBA
    Par bedrohung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/04/2010, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo