Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2011, 16h29   #1
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
Par défaut Formule Excel en code VBA

bonjour,

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

exemple :
Code :
=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.

enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 16h36   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
Sub TEST()
 
With Worksheets("Feuil1")
    MsgBox Application.CountIf(.Range("G:G"), "F")
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2011, 16h45   #3
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
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
enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 16h52   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
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 :
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 :
=SOMMEPROD((G1:G500="F")*(H1:H500="X")*1)
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 11h23   #5
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
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 :

Citation:
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
Type de fichier : xls Classeur1.xls (57,5 Ko, 4 affichages)
enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 11h39   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
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 :
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.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 11h43   #7
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
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.
enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 11h50   #8
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 199
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 199
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
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, ...)
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 12h05   #9
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
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 :
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.
enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 12h25   #10
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 199
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 199
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
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.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 14h11   #11
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
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 :
Citation:
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.

enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 15h12   #12
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonjour,

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

Code :
=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.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 15h19   #13
Membre à l'essai
 
Femme Catherine ALFONSO-HORTA
Assistante Développement
Inscription : juin 2008
Messages : 104
Détails du profil
Informations personnelles :
Nom : Femme Catherine ALFONSO-HORTA
Âge : 51
Localisation : France

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

Informations forums :
Inscription : juin 2008
Messages : 104
Points : 24
Points : 24
Par défaut formulaire sur excel2010 avec code VBA

merci beaucoup, c'est super !!!!
enretard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h27.


 
 
 
 
Partenaires

Hébergement Web