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 :

Tableau d'analyse - MFC en vba (macro)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut Tableau d'analyse - MFC en vba (macro)
    Bonjour à tous je viens vers vous, pour essayer de résoudre mon petit problème.

    J'utilise souvent Excel, j'ai déjà fait quelques macros, mais je ne suis pas trés doué.

    Mon problème se situe sur un tableau que j'utilise pour mon travail, je voudrais appliquer des MFC en passant par des macros pour ne plus être limité à 3 MFC par cellules (sachant que je ne peux pas passer à Excel 2007 sur mon lieu de travail, où je suis en 2003).

    Ce tableau me sert à inscrire les résultats d'analyse chimique d'échantillons connus et inconnus. Les échantillons connus servent à calibrer l'appareil et sont ensuite analysés, les échantillons inconnus sont ensuite analysés.

    Passons dans le vif du sujet, j'aimerais que les MFC s'applique aux lignes où le repère d'un échantillon connus est marqué.

    Exemple:

    1. Si dans une cellule de la colonne B de la ligne 7 à 41 est inscrit le repère de l'échantillon connu 1 il faut que les cases E, G, H, I, J, L, N, O dela même ligne, se colorent en gris. Pareil pour l'échantillon 2 (case K) et pour le 3, cases C, D, F, M. Pour info l'échantillon 1 n'est pas forcément le premier échantillon du tableau, c'est pourquoi je précise que cela doit être de la ligne 7 à 41.

    2. J'aimerais aussi que dans les lignes 7 à 41, les colonnes C à O réagisse ainsi: si l'échantillon connu 1 est marqué en B7, de la colonne C à O (ligne 7) la celulle metz le chiffre en rouge si le chiffre est hors limite (cad, inférieur à la moyenne moins l'écart, et supérieur à la moyenne plus l'écart).

    Pour être plus précis je vous mets à disposition deux fichiers, le premier est celui qui fonctionne avec des MFC, le deuxième est la base pour ce que je voudrais pouvoir faire.

    Merci pour votre aide précieuse.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    j'ai plusieurs questions...

    - Est ce que ton nombre d'échantillon est toujours le meme parceq ue tu nous parles des lignes 7 à 41... mais ça peut aller plus loin...

    - Est ce que tes echantillons 1, 2 et 3 ont toujours le meme nom ( éch1, éch2 et éch3 )... au quel cas, c'est assez simple...

    Mon seul probleme est que sans MFC, il faut "lancer" une macro... Qui dit lancer une macro dit créer un bouton pour la lancer ou alors créer un "évènement" particuliers pour la lancer...

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    pour faire ca, je te conseil de mettre ton code dans l'evenement Change de la feuille
    Un test sur Target te permettre d'appliquer la Mise en forme sur le changement des cellules voulues

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Row >= 7 And Target.Row <= 41 And Target.Column = 2 Then
     
        'Code de mise en forme
     
    End If
     
    End Sub
    Bon courage
    Jérôme

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    Je vais essayer d'être plus claire sur ce que je souhaiterais faire at ainsi répondre à vos questions.

    A l'heure actuelle, le tableau fonctionne avec des MFC (3 par cellulres sur la plage). Ces MFC font référence à un tableau qui se trouvent en bas du tableau de résultats.

    Cela pour le moment entière staisfaction. Alors pourquoi vouloir changer allez-vous me dire... Hé bien pour rendre ce classeur plus performant et surtout évolutif.

    Dans le nouveau classeur je désire avoir une feuille nommée "Résultats" (qui contiendra le même tableau qu'aujourd'hui), une feuille "MRC" (qui contiendra un tableau du même type mais avec les valeur des échantillons connus, ainsi que la tolérance) et peut-être une feuille "MFC" s'il y en a besoin.

    Le nom des échantillons s'inscrit dans la colonne B de 7 à 41, mais il n'y a pas toujours le même nombre, par contre ça ne dépasse pas la 41ème ligne. Les échantillons connus ont toujours le même nom.

    Et le but est que la mise en forme se fasse après avoir entré la valeur...

    Je sais que c'est compliqué à comprendre mais le fichier actuel que j'ai mis dans le premier post fonctionne est montre ce que je voudrais pouvoir faire.

    Merci pour votre aide.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    je ne connais pas ton niveau en vba mais ton probleme parait simple...

    en utilisant ce que jfontaine t'a donné comme bout de code, tout peut se faire en faisant des tests ( if... then... else ) sur chacun de tes échantillons et en remplissant les bonnes cases avec les bonnes couleurs...

    d'apres ce que je vois, y'a beaucoup de tests a faire mais une fois que tu as compris le truc, C assez simple...

    essai ça pour voir... a édulcorer bien sur...

    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
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
    Range("B7").Select
     
    If Target.Row >= 7 And Target.Row <= 41 Then
     
     
        Do Until ActiveCell.Value = ""
     
            If ActiveCell = "éch1" Then
                'TRAITEMENT ECHANTILLON 1
                'PAR EXEMPLE
                ActiveCell.Offset(0, 1).Interior.ColorIndex = 3
            Else
                If ActiveCell = "éch2" Then
                    'TRAITEMENT ECHANTILLON 2
                Else
                    If ActiveCell = "éch3" Then
                        'TRAITEMENT ECHANTILLON 3
                    Else
                        'TRAITEMENT ECHANTILLONS INCONNUS
                    End If
                End If
            End If
     
            ActiveCell.Offset(2, 0).Select
     
        Loop
     
    End If
     
    End Sub

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    En ce qui concerne mon niveau en vba, c'est assez simple, une fois que j'ai compris le cheminement c'est bon, mais avant cela je galère...

    En fait je n'ai pas ou je ne trouve pas la démarche pour faire ce que je veux faire. Par contre une fois que j'ai vu une macro entière je epux la reproduire...

    Et pour ce projet, je ne connais ni le code, ni la démarche. Or sur le net je ne trouve que des brides de réponses et je n'arrives pas à faire le lien avec ce que je pouvoir faire.

    Oui je suis un boulet, mais je voudrais tant m'améliorer

    Merci pour votre aide je vais essayer de voir comment intégrer le bout de code que vous m'avez montré.

    Je reviendrais vers vous pour vous dire comment cela se passe.

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Voila le code a copier dans ton fichier résultat futur

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Row >= 7 And Target.Row <= 41 And Target.Column = 2 Then
     
        Select Case Target.Value
     
            Case "éch1"
                RAZ_Format (Target.Row)
                Range("E" & Target.Row).Interior.ColorIndex = 15
                Range("G" & Target.Row).Interior.ColorIndex = 15
                Range("H" & Target.Row).Interior.ColorIndex = 15
                Range("I" & Target.Row).Interior.ColorIndex = 15
                Range("J" & Target.Row).Interior.ColorIndex = 15
                Range("L" & Target.Row).Interior.ColorIndex = 15
                Range("N" & Target.Row).Interior.ColorIndex = 15
                Range("O" & Target.Row).Interior.ColorIndex = 15
     
            Case "éch2"
                RAZ_Format (Target.Row)
                Range("K" & Target.Row).Interior.ColorIndex = 15
     
            Case "éch3"
                RAZ_Format (Target.Row)
                Range("C" & Target.Row).Interior.ColorIndex = 15
                Range("D" & Target.Row).Interior.ColorIndex = 15
                Range("F" & Target.Row).Interior.ColorIndex = 15
                Range("M" & Target.Row).Interior.ColorIndex = 15
     
            Case Else
                RAZ_Format (Target.Row)
     
        End Select
     
    Target.Select
     
    End If
     
     
    End Sub
     
    Sub RAZ_Format(Ligne As Integer)
     
    Range("C" & Ligne & ":T" & Ligne).Select
    Selection.Interior.ColorIndex = xlNone
    Selection.Font.ColorIndex = 0
     
    End Sub
    Si tu as des questions sur le code n'hésites pas
    Jérôme

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par jfontaine Voir le message
    Si tu as des questions sur le code n'hésites pas
    Bon j'ai essayé ton code. Je ne l'ai pas mis dans le workbook, mais dans la première feuille (dans la partie vba).

    Alors ça marche pour les cases grisées.

    Et je voulais savoir si ton code devais aussi rendre l'écriture rouge si les valeurs hors limite, si oui cela ne marches pas.

    Bon je vais voir le code d'un peu plus près pour essayer de mieux le comprendre.

    Merci pour tout l'aide, un jour j'y arriverais!

    Edit: le code sert à griser les cases, il faut maintenant que j'arrive à rendre l'écriture rouge si cela dépasse les limites des échantillons du tableau de la feuille BDD.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    Bon ben pour le moment ça marche pour griser les cases, mais je n'arrives pas pour la fonction qui ferait que le résulttat se mettrais en rouge q'il est hors limite. un collègue m'avait donné un coup de main avec un code (qui fonctionnait avec un bouton, ce que je veux éviter), mais en regardant je n'arrives pas à intégrer le code...

    J'arrive à rien en ce moment... Il est loin le temps ou j'ai fais des macros qui étaient bien plus hard...

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Peux tu expliquer un peut plus (avec un exemple)
    (cad, inférieur à la moyenne moins l'écart, et supérieur à la moyenne plus l'écart
    Jérôme

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    Ok je vais voir pour vous faire un exemple, si possible ce soir (sinon demain). Encore merci pour l'aide.

Discussions similaires

  1. [Mission/Télétravail] Consultant Développeur Freelance Excel VBA Macros Tableau croisé finance etc
    Par Pythonesque dans le forum Demandes
    Réponses: 0
    Dernier message: 18/06/2013, 00h16
  2. [Toutes versions] [VBA] Macro permettant de compter les caractères de chaque ligne d'un tableau
    Par SiLiCe dans le forum VBA Word
    Réponses: 2
    Dernier message: 28/07/2011, 15h06
  3. [XL-2003] MFC - VBA -Macro ne fonctionne pas
    Par jorisphi dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/01/2010, 12h22
  4. [VBA]Macro pour lancer une recherche dans un tableau
    Par manhes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2007, 18h08
  5. Requete Analyse croisée en VBA, Reconnait pas "TRANSFOR
    Par samlepiratepaddy dans le forum Access
    Réponses: 2
    Dernier message: 20/10/2005, 08h58

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