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 :

Formule Excel en code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut Formule Excel en code VBA
    bonjour,

    est-il possible de mettre une fonction excel dans un code VBA :

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(A2:H174;"H") & NB.SI(A2:H174;"F")
    par rapport au CSP

    je voudrais qu'il calcule le nombre de F et le nombre de H par rapport à une autre colonne nommée "CSP"

    ma colonne CSP est "H" et ma colonne SEXE est "G"

    pouvez-vous me donner un exemple que je pourrais trouver sur le forum ?

    ou un exemple de formule ?

    je vous remercie par avance de votre aide.

    je suis débutante, donc, je progresses grâce à vous depuis déjà 3 ans.
    Mais je n'utilise pas beaucoup ces fonctions, j'ai donc du mal à trouver les bonnes formules.


  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub TEST()
     
    With Worksheets("Feuil1")
        MsgBox Application.CountIf(.Range("G:G"), "F")
    End With
    End Sub

  3. #3
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    Bonjour mercatog,

    je te remercie de ta réponse rapide.

    Ce code marche très bien, mais il ne prend pas en compte ma colonne CSP, il me calcule 17 F !

    je voudrais qu'il prenne en compte ma colonne CSP qui est partagé par différentes fonctions, exemple : Ouvrier NQ, Employé, Cadres, etc...
    il faudrait qu'il me compte le nombre de F dans chaque fonction.

    J'espère être claire, je m'excuse d'avance au cas où.

    Merci

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour compter les nombres de lignes où en colonne G on a la lettre F et en colonne H on a la lettre X
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TEST()
     
    MsgBox Evaluate("SUMPRODUCT((Feuil1!G1:G500=""F"")*(Feuil1!H1:H500=""X"")*1)")
    End Sub
    C'est la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((G1:G500="F")*(H1:H500="X")*1)

  5. #5
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    bonjour,

    je crois que je m'explique mal. je vais essayer de donner un exemple clair :

    je voudrais qu'il m'ajoute "1" à chaque fois qu'il trouve un H dans la colonne G quand dans la colonne I il trouve ouvrier qualifié etc... idem pour quand il trouve "F" dans la colonne G quand dans la colonne I il trouve employé etc...
    est-il possible avec Excel en code VBA pour qu'il remplisse mon formulaire automatiquement en fonction des données ?

    je vous joints un exemple pour que vous compreniez mieux ce que j'attends.

    Je vous remercie à l'avance.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Oui c'est ça, tu veux compter le nombre d'employés femmes et le nombre d'employés hommes.
    Attention, tu as des espaces après des données (d'où le TRIM)

    Testé sur ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub TEST()
    Dim NbEmpH As Integer, NbEmpF As Integer
     
    NbEmpF = Evaluate("SUMPRODUCT((TRIM(G2:G49)=""F"")*(TRIM(H2:H49)=""Employé"")*1)")
    NbEmpH = Evaluate("SUMPRODUCT((TRIM(G2:G49)=""H"")*(TRIM(H2:H49)=""Employé"")*1)")
     
    MsgBox "Nombre d'employés:" & vbCrLf & "  ¤ Femmes: " & NbEmpF & vbCrLf & "  ¤ Hommes: " & NbEmpH
     
    End Sub

    Sinon et c'est le plus important, vu les données de ton fichier, utilise plutôt un tableau croisé dynamique, il te donnera toutes les formes de synthèse que tu veux sans une seule ligne de vba. C'est ça Excel.

  7. #7
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    merci beaucoup pour ta formule, je l'essaye et l'adapte.

    Si çà marche je vous tiens au courant et je n'oublierai pas "RESOLU".

    Bien à toi.

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Salut.

    Quelle est ta version d'Excel? Depuis la 2007, tu as NB.SI.ENS(), SOMME.SI.ENS() et MOYENNE.SI.ENS() qui permettent jusqu'à 64 critères évalués sur les valeurs des cellules.

    De façon plus générique, pour récupérer une formule EXCEL en VBA, tu peux utiliser l'astuce suivante:
    1. saisir la formule en Excel et garder la cellule qui la contient active ;
    2. en VBA, afficher la fenêtre d'exécution (CTRL+G) ;
    3. afficher dans cette fenêtre la formule de la cellule active en saisissant ? activecell.formula (il est toujours préférable de travailler avec la version "internationale" de la formule.


    Il suffira alors d'adapter cette chaine de caractères (nombre de lignes, ...)

  9. #9
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    j'ai un autre souci, en mettant cette formule, j'ai un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub VALIDER_Click()
    Dim Nbemph As Integer, NbEmpF As Integer
     
    NbEmpF = Evaluate("SUMPRODUCT((TRIM(G2:G174)=""F"")*(TRIM(H2:H174)=""Employé"")*1)")
    Nbemph = Evaluate("SUMPRODUCT((TRIM(G2:G174)=""H"")*(TRIM(H2:H174)=""Employé"")*1)")
     
    MsgBox("Nombre d'employés:" & vbcrlf("Femmes:") & NbEmpF & vbcrlf)("Hommes:") = n
     
    End Sub
    message d'erreur : erreur de compilation (tableau attendu) ?

    sinon le tableau croisé dynamique ne me donne pas la possibilité de remplir ma fiche1 automatiquement, c'est pourquoi je pensais faire du code VBA pour que mes données ne bougent pas.

    Je te remercie pour tes conseils.

    Bien à toi.

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Pourquoi ne peux-tu pas remplir directement ta fiche1 en utilisant la formule en Excel?

    De plus, il faut noter que dans le code donné en VBA, la plage utilisée est fixée "en dur" dans le code, ce qui est pour le moins inadéquat. Si tu ajoutes, insères ou retranches des lignes, tu dois aller modifier ton code.

    Ne serait-il pas plus simple de nous expliquer ce que tu souhaites obtenir?

    Par rapport au code proposé par Mercatog, tu as ajouté des parenthèses . Pas sûr que ce soit une bonne idée.

  11. #11
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    bonjour,

    je suis sur Excel2010, j'ai essayé avec les formules EXCEL, mais le chiffre est faussé car je suis obligé de filtrer avant de calculer, ce qui fait que le chiffre est erroné !

    ma formule : =NB.SI(G48:G78;"H") me donne sur les OQ "1" alors que j'en ai au moins 10 sur la colonne.

    Je ne sais pas faire sans tri - je veux bien essayer d'utiliser vos formules pour voir si ça me convient.

    Ce que j'essaye d'expliquer :
    Ne serait-il pas plus simple de nous expliquer ce que tu souhaites obtenir?
    je voudrais qu'il me compte en automatique et qu'il me remplisse ma fiche 1 automatiquement dans la bonne colonne (exemple: le nombre d'hommes et de femmes par catégorie : en employé, en cadre, en ouvrier qualifié, en ouvrier non qualifié etc...) et qu'il aille remplir la bonne case de ma fiche 1.

    J'espère avoir été assez claire ! Désolée si je ne le suis pas.

    Merci pour tout, si vous savez où je peux trouver une formule qui puisse me donner ce résultat, je suis preneuse.


  12. #12
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Exemple de formule pour trouver le nombre d’ouvriers qualifiés homme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS(DONNEES!G2:G50;"=H ";DONNEES!H2:H50;"=Ouvrier Q ")
    Tu places cette formule en cellule C23 de ta feuille « Fiche1» et tu obtiens 12.

    Attention toutefois à bien orthographier tes critères.
    Dans ta colonne SEXE, le caractère H ou F est suivi d’un espace.
    Idem pour la colonne CSP.

    Cordialement.

  13. #13
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut formulaire sur excel2010 avec code VBA
    merci beaucoup, c'est super !!!!

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

Discussions similaires

  1. [XL-2010] formule excel en code vba
    Par jad73 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/11/2011, 17h03
  2. mise en forme fichier excel depuis code vba (Access 2003)
    Par Kass4r dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/04/2008, 11h38
  3. Problème de formule dans un code VBA
    Par Toison dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/01/2008, 11h20
  4. Accés au donnés sur Excel via Code vba Access
    Par sakia dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/11/2007, 16h46
  5. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48

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