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 :

Code vba qui ne fonctionne plus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2025
    Messages : 6
    Par défaut Code vba qui ne fonctionne plus
    Bonjour à tous,
    J'ai un problème de code, en particulier le calcul de la variable Prd.

    For i = 7 To 19
    Recap.Select
    Cells(i, j).Select
    Prd = WorksheetFunction.AverageIfs(Base.Range("C:C"), Base.Range("B:B"), Recap.Cells(i, 2), Base.Range("A:A"), Recap.Cells(5, j))
    If Prd > 1 Then
    Prd = 1
    Recap.Cells(i, j) = Prd
    Couleur
    Else
    Recap.Cells(i, j) = Prd
    Couleur
    End If
    Next

    A chaque fois j'ai le message d'erreur "Impossible de lire la propriété de AverageIfs de la classe Worksheetfunction"
    Quand je survole les différents arguments, ils affichent bien les valeurs voulues.
    Et si je supprime les 2 derniers critères, tout se calcule bien (mais ce n'est pas le résultat que je recherche).

    Le pire, c'est que ce calcul a fonctionné il n'y a pas si longtemps.
    Si qq'un a une idée de ce qui cloche, ou de la manière d'utiliser cette fonction en vba, je suis preneur.
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avez-vous essayé la formule manuellement ne fusse que sur une colonne avec la fonction MOYENNE.SI.ENS, je serai surpris quelle fonctionne
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2025
    Messages : 6
    Par défaut
    Si je demande le même calcul dans une cellule excel avec MOYENNE.SI.ENS j'obtiens le résultat sans aucun problème.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si je demande le même calcul dans une cellule excel avec MOYENNE.SI.ENS j'obtiens le résultat sans aucun problème.
    Alors, le classeur que vous avez joint n'est pas le même que celui que vous utilisez.

    Si j'ai bien compris la fonction, vous utilisez comme plage de critère1 la colonne des noms du tableau structuré de votre feuille "Données" et comme critère1 les cellules de la colonne B, dont le titre est "Opérateur". Or, comme opérateur, vous avez mis des lettres, alors que dans la colonne des noms, vous avez des noms et prénoms. Donc, déjà là, il y a un souci.

    Petites remarques :
    • Pourquoi référencez-vous les colonnes entières de la feuille "Données" alors que vous utilisez un tableau structuré ?
      J'ai placé "Logan GRAPPEY" en cellule B7 à la place de la lettre, renommé votre tableau t_Data au lieu de Tableau4, et écrit la formule suivante : =MOYENNE.SI.ENS(t_Data[%];t_Data[Nom];'Tableau récap'!$B7;t_Data[Date];'Tableau récap'!D$5), et là, cela a fonctionné.
    • Pourquoi utiliser une boucle alors que vous pouvez écrire la formule en une seule instruction pour l'ensemble des colonnes et lignes du tableau, soit D7:AH25 ?
    • Enfin, pourquoi utiliser du VBA alors que de simples formules suffiraient ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2025
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2025
    Messages : 6
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Alors, le classeur que vous avez joint n'est pas le même que celui que vous utilisez.

    Si j'ai bien compris la fonction, vous utilisez comme plage de critère1 la colonne des noms du tableau structuré de votre feuille "Données" et comme critère1 les cellules de la colonne B, dont le titre est "Opérateur". Or, comme opérateur, vous avez mis des lettres, alors que dans la colonne des noms, vous avez des noms et prénoms. Donc, déjà là, il y a un souci.

    Petites remarques :
    • Pourquoi référencez-vous les colonnes entières de la feuille "Données" alors que vous utilisez un tableau structuré ?
      J'ai placé "Logan GRAPPEY" en cellule B7 à la place de la lettre, renommé votre tableau t_Data au lieu de Tableau4, et écrit la formule suivante : =MOYENNE.SI.ENS(t_Data[%];t_Data[Nom];'Tableau récap'!$B7;t_Data[Date];'Tableau récap'!D$5), et là, cela a fonctionné.
    • Pourquoi utiliser une boucle alors que vous pouvez écrire la formule en une seule instruction pour l'ensemble des colonnes et lignes du tableau, soit D7:AH25 ?
    • Enfin, pourquoi utiliser du VBA alors que de simples formules suffiraient ?
    J'utilise une boucle parce que certains opérateurs travaillent le weekend et donc je n'ai pas de données pour la semaine, donc je veux que le calcule s'arrete avant de faire une erreur.
    Je veux faire ce calcul par vba afin que justement il n'y ait pas de formules dans les cases; juste une valeur fixe.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Et pour ma remarque "Alors, le classeur que vous avez joint n'est pas le même que celui que vous utilisez." ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2016] code VBA enregistrerPDF() ne fonctionne plus sous MAC
    Par AGoldorak dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2017, 14h40
  2. Code VBA qui ne fonctionne pas
    Par DJOUFOU dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/11/2016, 10h56
  3. Code VBA qui ne fonctionne pas et ne retourne pas d erreurs
    Par Eddy95500 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/10/2015, 12h51
  4. [XL-2010] Fonction VBA qui ne fonctionne plus sous excel 2010
    Par Outinet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2012, 13h49
  5. [XL-2007] Pb de code VBA qui ne fonctionne plus
    Par rch05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2011, 07h41

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