Automatisation dans Excel

Bonjour à tous,

J’ai besoin d’aide pour faire une automatisation dans mon classeur EXCEL. Je m’explique :

Dans mon onglet « Evaluation » je vais venir cocher dans les colonnes Chantier 1/Chantier 2…. C’est les chantiers pour lesquels les entreprises sont concernés.

Mais j’aimerais que quand je coche cette case, cela se rapporte au pourcentage de performance indiqué dans la feuille 2. Si je coche plusieurs cases pour l’entreprise, j’aimerais ensuite que ca me fasse la moyenne dans la colonne « Moyenne des performances)

Je met le fichier en PJ

Je vous remercie,

14test.xlsx (18.15 Ko)

Bonjour,

Personnellement je trouve la présentation de ton tableau d'Evaluation pas très pratique (en dehors de l'aspect visuel, pas pratique pour y ajouter des formules...).

Pour faire ce que tu souhaites, tu peux reporter la note en % de chaque chantier à l'intersection de chaque entreprise concernée (en clair, ne pas mettre juste une croix du genre "x"). Par exemple avec la formule suivante en G5 :

=SIERREUR(RECHERCHEV(G$3;Tableau2[[Chantier]:[Performance]];2;FAUX);"").

La note moyenne de chaque entreprise correspond alors à la moyenne de sa ligne (formule en D5) :

=MOYENNE($G5:$BP5).

Bonjour

Je n'arrive pas à faire fonctionner la formule dans mon tableau Excel

Pouvez vous me donner un exemple dans le fichier en PJ.

Après mon but était de mettre vraiment une croix donc créer peut etre une macro.

Merci

Pourquoi faire simple quand on peut faire compliqué !

Avant de me lancer dans ce genre d'entreprise : As-tu VRAIMENT besoin de présenter ton tableau ainsi ?

Bonjour,

Non pas particulièrement, quel est votre exemple ?

Bonjour,

Non pas particulièrement, quel est votre exemple ?

Quelque chose du genre :

  • -> Un onglet "Base de données" avec 1 ligne = 1 entreprise x 1 chantier (avec RECHERCHEV() permettant de reporter l'évaluation du chantier)
  • -> Un onglet "Visualisation" avec un TCD (Tableau Croisé Dynamique) permettant de faire les moyennes et de mieux visualiser les données
  • -> Un onglet "Chantier", équivalent à ton actuelle feuille 2

Quelque chose comme ca ?

9test2.xlsx (19.77 Ko)

Plutôt de ce genre :

11test2.xlsx (20.58 Ko)

Désolé mais ce n'est pas une solution pour moi d'avoir plusieurs onglets, votre choix ne correspond pas à mes attentes

Euh... Tu as déjà plusieurs onglets...

mon rendu doit etre identique à celui que j'ai mis en premier fichier

J'ai deja une liste d'entreprise et le but est de faire des crois qui m'affiche des pourcentages et de me faire une moyenne.

Je ne peux pas modifier le fichier de base, je recherche juste une solution pour ce problème.

Dans ce cas, voilà une macro pour ton premier fichier :

Sub MoyenneParEntreprise()

Dim Eval() As Single, MaxLig As Long, Lig As Long, MaxCol As Integer, Col As Integer, Correspond As Range, N As Integer

With Sheets("Evaluation")
    MaxLig = .Range("A" & .Rows.Count).End(xlUp).Row 'Identifie la dernière ligne
    MaxCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'Dernière colonne
    For Lig = 5 To MaxLig 'Pour chaque ligne
        Moy = 0
        N = 0
        ReDim Eval(1)
        For Col = 7 To MaxCol 'Pour chaque colonne
            If .Cells(Lig, Col) = "x" Then 'Si la cellule contient "x"
                Set Correspond = Sheets("Feuil2").Range("C2:C" & Sheets("Feuil2").Range("C" & Rows.Count).End(xlUp).Row).Find(.Cells(3, Col), LookIn:=xlValues, LookAt:=xlWhole) 'On cherche l'évaluation correspondant à ce chantier
                If Not Correspond Is Nothing Then
                    If IsNumeric(Sheets("Feuil2").Cells(Correspond.Row, 4)) And Sheets("Feuil2").Cells(Correspond.Row, 4) > 0 Then
                        Eval(N) = Sheets("Feuil2").Cells(Correspond.Row, 4) 'Si on trouve une valeur numérique, alors on la garde en mémoire
                        N = N + 1
                        ReDim Preserve Eval(N)
                    End If
                End If
            End If
            .Cells(Lig, 4) = Application.Average(Eval) 'Une fois que l'on a parcouru toutes les colonnes, on fait la moyenne des valeurs en mémoire
        Next Col
    Next Lig
End With

End Sub

Par contre, celà nécessite quelques points :

  • -> Pas de changement de nom d'onglets (sinon il faut les modifier aussi dans le code)
  • -> Le tableau des chantiers en feuille "Evaluation" comporte 4 lignes d'en-tête et le 1er chantier démarre en colonne G
  • -> Cocher une case revient à y mettre un "x" (un autre caractère n'étant pas reconnu)

Je maintiens qu'un fichier mal conçu au départ te posera problème par la suite, et c'est valable pour tous les fichiers.

Merci, je vais regarder ça début d'après midi

J'ai inséré la macro mais celle ci ne fonctionne pas quand je met les x.

Je vous met mon fichier en PJ.

Merci

0test.xlsm (23.92 Ko)

Telle qu'elle est écrite, elle est à exécuter manuellement (il est possible d'ajouter un bouton). Il est également possible d'appeler une macro automatiquement en cliquant sur une zone spécifique (macro événementielle) mais je ne maîtrise pas vraiment ce type de code et je laisserais quelqu'un plus expert sur le sujet adapter le code.

Merci pour ce retour, je vais attendre alors.

Par contre,

dans le fichier (le dernier) que vous avez envoyé si je veux changer chantier 1 ... par des vrais noms comment je dois faire pour que la formule fonctionne dans le premier onglet ?

Je vous remercie

3test2-base.xlsx (21.75 Ko)

Par contre,

dans le fichier (le dernier) que vous avez envoyé si je veux changer chantier 1 ... par des vrais noms comment je dois faire pour que la formule fonctionne dans le premier onglet ?

Je vous remercie

Pour simplifier la saisie, j'avais fais une formule qui permettait simplement d'écrire le n° du chantier, mais de chercher "Chantier 1" par exemple pour le n°1 grâce à cette partie de la formule : "Chantier "&[@CHANTIER].

Tu peux néanmoins écrire le nom complet du chantier et remplacer cette écriture par [@CHANTIER] seul

Merci et si une entreprise à plusieurs chantiers, est ce que je peux mettre les chantier à la suite dans le premier onglet "base de données"?

3test2-base.xlsx (22.48 Ko)
Rechercher des sujets similaires à "automatisation"