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 :

VBA Calcul Formel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut VBA Calcul Formel
    Bonjour, je suis débutant et j'ai un projet à faire,
    En ce moment je bloque à la dernière étape de mon projet, je m'explique :

    Je dois crée un code en VBA qui me permettra de factoriser n'importe quelle expression comme ( a . ( b . c. d ) ) + ( a . ( e .b . f . d ) ) et je devrai trouver ( a . b . d ) . ( c + ( e . f ) ) ou bien comme ( a . b ) + ( a . c ) qui me donnera a + ( b . c ) bref les expressions sont variable.

    les cellules sont décomposé ainsi :
    (
    Type
    ET
    bleu
    )
    OU
    (
    Type
    ET
    vert
    )

    Ici Il faudrait obtenir :
    (
    Type
    )
    ET
    (
    Bleu
    ou
    Vert
    )


    je ne sais pas du tout comment je pourrais faire , je viens donc vous demander de l'aide ...

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Le meilleur moyen de commencer est de trouver une définition de la factorisation --> qu'est-ce qui est constant dans toute factorisation? Quelle est la logique derrière une factorisation? Pour écrire un code, il faut trouver une logique applicable à tous les cas visé.
    Tu remarques notamment : il faut qu'il y ait un élément commun dans chacune des expressions séparées par le + (ou le OU). Tu peux donc commencer par repérer les OU et ainsi obtenir les expressions séparées par les OU. Tu compares toutes ces expressions et tu cherches si elles ont des éléments communs.
    C'est une idée ... il faut la travailler.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut
    Merci pour ta réponse je me lance dans le code pour séparer l'expression quand je trouve un OU

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test3()
     
        Set DCISheet = ActiveSheet
        parenDeb = InStr(2, DCISheet.Cells(1, 1), "(")
        parenEnd = InStr(2, DCISheet.Cells(1, 1), ")")
        cel = Mid(DCISheet.Cells(1, 1), parenDeb, parenEnd)
        abc = Len(DCISheet.Cells(1, 1))
        decoupe = InStr(1, DCISheet.Cells(1, 1), "OU")
        cel1 = Left(DCISheet.Cells(1, 1), decoupe)
     
        cel2 = Right(DCISheet.Cells(1, 1), decoupe)
        MsgBox cel1
        MsgBox cel2
    End Sub
    Voila j'ai commencé à découper mais je n'ai pas toute la parenthèse au complète ( par exemple dans ma cel 2, il me manque le début de ma 2e Partie après le ou, et dans ma cel1 j'ai le O de ou qui s'affiche ....

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    A quoi te servent les variables ParenDeb, parenEnd et cel?
    Pour couper une chaine, il y a plus simple --> la méthode Split qui renvoie une liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox("la maison OU l'appartement", "OU")(0)       'renvoie "la maison "
    MsgBox("la maison OU l'appartement", "OU")(1)       'renvoie " l'appartement"
    Attention aux espaces qui sont considérés comme des caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox("la maison OU l'appartement", " OU ")(0)       'renvoie "la maison"
    MsgBox("la maison OU l'appartement", " OU ")(1)       'renvoie "l'appartement"
    Ensuite tu peux réutiliser Split pour avoir chacun des éléments.
    D'autres exemples de Split pour t'inspirer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Msgbox Split("la maison", " ")(0)          'renvoie "la"
    Msgbox Split("la maison", " ")(1)          'renvoie "maison"
    Msgbox Split("maison", "")(0)          'renvoie "m"
    Msgbox Split("maison", "")(3)          'renvoie "s"

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Sub Tableau()
        Set DCISheet = ActiveSheet
     
     
        Fr = Split(DCISheet.Cells(1, 1), "OU")
     
        For i = 0 To UBound(Fr)
     
            MsgBox Fr(i)
     
         Next i
    End Sub
    Du coup j'arrive bien a séparé mais après comment je peux comparer les facteur commun ?

Discussions similaires

  1. [VBA] Calculer la différence entre deux dates
    Par T'chab dans le forum Access
    Réponses: 13
    Dernier message: 11/05/2006, 15h12
  2. [VBA] Calcul pour insérer dans une textebox
    Par Yanmeunier dans le forum IHM
    Réponses: 13
    Dernier message: 15/03/2006, 16h38
  3. Réponses: 3
    Dernier message: 23/01/2006, 10h10
  4. [VBA] Calcul du PGDC --> Problème de résultat
    Par snoopy69 dans le forum Access
    Réponses: 16
    Dernier message: 25/08/2005, 14h23
  5. [C] Calcul Formel
    Par Paniez dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 19/03/2005, 10h36

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