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 :

[E-03] Passage Argument Formule Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut [E-03] Passage Argument Formule Excel
    Bonjour,

    J'utilise Excel 2003.

    J'ai une formule de 6 pieds de long :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=TRIM(CLEAN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RC[-1],""("",""""),"")"",""""),""."",""""),""-"",""""),""/"",""""),"" "",CHAR(7))))"
    En gros, elle substitue les caractères "spéciaux" parenthèses ouverte, parenthèse fermée, le point, etc... avec rien. Puis, converti les espaces dans un caractère non imprimable (Char(7)) afin de pouvoir les supprimer par Clean, et avoir une cellule avec toute les lettres coller ensemble.

    ex. AGAY (ST-RAPHAEL)
    devient AGAYSTRAPHAEL

    J'a besoin de cette "mise en forme" pour autre chose ensuite.

    Je voudrais faire 2 choses :

    1) Je voudrais pouvoir "simplifier" : comme on le voit, se sont des SUBSTITUTE imbriqués les uns dans les autres.

    J'aimerai pouvoir faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Dim OpBr
        Dim ClBr
     
        OpBr = "=SUBSTITUTE(RC[-1],""("","""")"
        ClBr = "=SUBSTITUTE(OpBr,"")"","""")"
     
     
        ActiveCell.FormulaR1C1 = ClBr
    Ainsi au final, une fois que j'aurai creer tout mes Dim qui sont une décomposition de la formule initiale, je n'aurai plus qu'une formule simple avec le résultat final.

    Problème : A ce stade déjà ça ne fonctionne pas. Je suis presque certaine que c'est lié à la syntaxe (doit manque un & ou un ' quelque part).

    Une idée?

    2) L'objectif est de tester si je peux par ce biais passer outre la limitation excel de 7 fonctions imbriquées. Le formule telle qu'elle existe à ce jour atteint cette limite et j'ai encore d'autre caractères que j'aimerai supprimer (les virgules par exemple).

    Voilà. D'avance, merci de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonjour


    Voici une autre approche de ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Function Alphanum(sTr$)
    For i = 1 To Len(sTr)
        sChr = Mid(sTr, i, 1)
            If sChr Like "[A-Z,a-z,0-9]" Then
            CStrg = CStrg & sChr
            End If
        Next
    Alphanum = CStrg
    End Function
    Sub nettoie()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange
    c = Alphanum(c.Text)
    Next
    End Sub


    J.L

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut
    Alors là je dis MÔSSIEUR J.L !!

    C'est génial !!

    J'ai modifié un peu car je ne doit pas tout nettoyer, je dois conserver les données originales + mon fichier fait un paquet de colonnes qui n'ont pas besoin d'être nettoyées, et je veux aussi virer les chiffres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Function Alphanum(sTr$)
    For i = 1 To Len(sTr)
        sChr = Mid(sTr, i, 1)
            If sChr Like "[A-Z,a-z]" Then
            CStrg = CStrg & sChr
            End If
        Next
    Alphanum = CStrg
    End Function
     
    Sub NewCodes()
     
        Columns("G:G").Insert Shift:=xlToRight
        Range("F3", Range("D3").End(xlDown).Offset(0, 2)).Copy
        Range("G3", Range("D3").End(xlDown).Offset(0, 3)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
    Dim c As Range
    For Each c In ActiveSheet.Range("G3", Range("D3").End(xlDown).Offset(0, 3))
    c = Alphanum(c.Text)
    Next
     
    End sub
    Il me reste cependant un caractères qui n'est pas nettoyé avec ce code : la virgule...

    Une idée?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonsoir


    Je modifierai ton code ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub NewCodes()
    Dim aWS As Worksheet, c As Range
    Set aWS = ActiveSheet
    aWS.Columns("G:G").Insert Shift:=xlToRight
    aWS.Range("F3:F" & Range("D65536").End(xlUp).Row).Copy Range("G3")
    For Each c In aWS.Range("G3:G" & Range("D65536").End(xlUp).Row)
    c = Alphanum(c.Text)
    c = Replace(c.Text, ",", vbNullString)
    Next
    End Sub
    @+

    J.L

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Ca par exemple?

    Monsieur J.L ne t'a pas donné une réponse parfaitement exacte mon cher.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut
    As simple as that

    Bon tu veux aussi du MÔSSIEUR ? Alors merci Môssieur decondelite (en petit parce que J.L a quand même fourni le plus gros)

    Merci à vous deux, c'est super, tout fonctionne.

    @ J.L.

    J'ai vu ton update, vu que mon code fonctionne je vais le garder (question d'habitude ) Ta version est trop intelligente pour moi, j'aurai peur de ne pas savoir la déboguer si je rencontre un problème


Discussions similaires

  1. Simplifier une formule excel
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/04/2006, 09h10
  2. [debutant] Traduite une formule excel dans access
    Par zelob dans le forum Access
    Réponses: 5
    Dernier message: 25/02/2006, 05h17
  3. [VBA]Passer une variable dans une formule Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2006, 16h52
  4. inséré des formule excel dans VB
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2005, 17h21
  5. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08

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