VBA Excel - Exercices à rendre
Bonjour à tous,
Comme l'atteste mon pseudo, je suis un débutant (un vrai de vrai !) en programmation VBA, or il s'avère que j'ai un certain nombre d'exercices à rendre et j'avoue faire face à de grosse difficultés. Je sollicite donc votre aide pour éventuellement m'orienter ou corriger mes erreurs.
Tout d'abord, voici l'énoncé des exercices. Il faut d'entrée savoir que je ne suis dans l'absolu qu'en capacité de faire les 3 premiers, l'enseignant ayant pour une raison qui m'échappe jugé bon de nous donner un exercice où il faut vraisemblablement utiliser 'inputbox' sans nous en parler avant...
Pour ce qui est de la feuilleliste2, il s'agit d'une liste de 103 noms (dont les 11 de la feuillelist1) dans la colonne A ainsi que le chiffre '103' dans la ligne 1 de la colonne B.
Pour l'exercice 1, on a fait une application en cours avec le calcul d'une seule moyenne (l'âge moyen d'une liste de n personnes) mais l'application avec 4 moyennes distinctes à calculer et à reporter me pose problème. Je pense qu'il faut utiliser un For associé à plusieurs if mais je ne sais pas si je dois avoir un For pour l'ensemble des 4 moyennes ou plutôt un For pour les hommes et un pour les femmes.
Pour l'exercice 2, on en a fait un en cours mais sans la condition supplémentaire ajoutée ici (résider à Marseille). C'est sous la forme For, If (condition du sexe), If (condition de la résidence) je pense avec un CumulF au milieu pour le comptage mais comme il ne faut pas prendre en compte toutes les cellules je ne sais pas trop comment l'aborder...Pour ce qui d'enregistrer le résultat, il s'agit je pense d'un simple résultat=cells(12,1).
Pour l'exercice 3, je ne sais pas trop comment on doit recopier une partie d'entière vu qu'on n'a pas fait d'application concrète. J'imagine qu'il faut utiliser quelque chose comme FeuilSheetMarseille=cells() en y ajoutant une condition mais je ne vois pas du tout comment faire...
Enfin, comme expliqué plus haut, je n'ai aucun moyen d'aborder l'exercice 4...
D'avance merci beaucoup pour vos conseils, votre aide et vos corrections.
Bonne journée !
Bonjour. Bienvenue sur le Forum
Sans vouloir être rabat-joie, je dirai que le propre des exercices "à rendre" consiste pour celui qui les a reçu à montrer sa comprehension d'un sujet qu'il devait étudier.
Le Forum est là pour aider à apprendre et progresser, pas pour se substituer et faire à la place de...
Nous sommes tous ouverts à t'aider si tu butes sur un sujet précis, une formulation de commande, une formule, etc..
Envoie le début de ton travail et (pas trop de questions à la fois), nous verrons de t'expliquer et t'aider à progresser.
Cordialement
D'abord, merci pour votre réponse.
Le problème avec ces exercices, c'est que j'en ai une compréhension vraiment très limitée. A y regarder de plus près, j'ai 'réussi' à construire quelque chose de peut-être correct pour le 2 et j'ai un début pour le 1 mais le 3 et à plus forte raison encore le 4 m'échappent complètement...
Pour le 2 :
SubCompteFMarseille
Dim i as integer
Dim CumulF as integer
For i=2 to 11 Step 11
If cells(i,3)="F" and cells(i,4)="Marseille"
Then
CumulF = CumulF+1
Else CumulF=CumulF
End If
End SubEt pour le 1 :
Subagemoyen
Dim i as integer
Dim agecumulFmajeures as integer
Dim agecumulFmineures as integer
Dim agecumulHmajeurs as integer
Dim agecumulHmineurs as integer
For i=2 to 11 Step 1
If cells(i,3) = "F"
If cells(i,2) > 18
then
agecumulFmajeures= agecumulFmajeures+1
Else
agecumulFmineures= agecumulFmineures+1
End If
Else
If cells(i,2)>18
agecumulHmajeurs= agecumulHmajeurs+1
agecumulHmineurs= agecumulHmineurs+1
End If
End SubSalut Beginner, Salut Amadéus,
Beginner, Amadéus a parfaitement raison, on peut essayer de t’aider si tu y mets un peu du tien, mais on ne va pas faire tout le travail à ta place. Mais dans ton cas, il y a du boulot.
Egalement comme le dit Amadéus, ne pose pas trop de questions à la fois.
Pour l’instant, je ne me suis donc intéressé qu’à la question 2 et à ton embryon de solution. Dans le fichier ci-joint – que j’ai dû créer puisque tu ne nous l’as pas fourni – j’ai placé ton code « pour le 2 » ; il y a beaucoup de lignes qui apparaissent en rouge !! Je ne sais pas si tu l’as testé, mais il n’y a pas grand-chose qui fonctionne.
Je l’ai donc mis en veilleuse et j’ai tenté de te montrer comment on peut déjà corriger le début de ton travail.
Maintenant la variable CumulF remplis sa fonction et trouve 3 Marseillaises sur mon fichier. Mais ce serait bien de placer cette information quelque part comme demandé dans l’énoncé, non ??
Montre quand même que tu te donnes un peu de peine, si tu veux obtenir plus d’aide de notre part. Pour l’instant j’ai l’impression que tu t’es dit : « Bof, si Amadéus me dit que je dois préparer quelque chose, je fais n’importe quoi pour qu’il soit content et il y aura bien un autre membre qui va faire ce travail à ma place ».
Cordialement.
Bonsoir,
Et n'hésite pas à te servir de l'aide qui est très bien faite, c'est fait pour...
Pour 'inputbox' tu auras les explications et un exemple.
eric
En fait, si on utilise Excel en TD, chez moi j'ai Open Office et malheureusement je n'arrive même pas à 'ouvrir' les macros (j'arrive à les activer via 'option' 'sécurité' mais ensuite c'est assez confus avec tous les modules et fichiers). Du coup, je fais ça sur un fichier texte et il m'est impossible de tester quoi que ce soit (l'examen final se fera de toute façon sur feuille donc c'est un peu un mal pour un bien) ce qui explique sans doute que les procédures que j'ai mises à votre disposition soient truffées d'erreurs.
Par exemple, je n'arrive pas à voir la procédure que vous avez pu réaliser dans le fichier que vous m'avez fournie.
edit :
Après quelques corrections :
Sub Macro2()
Dim i as integer
Dim CumulF as integer
For i=2 to 11 Step 1
If cells(i,3)="F" and cells(i,4)="Marseille" Then
CumulF = CumulF+1
End If
Next
cells(12,1) = CumulF
End Sub
Bonjour,
Tes salutations et tes remerciements me font bien plaisir
Je te suit très reconnaissant d’avoir "corrigé" ma macro. Cependant le Step 1 est absolument inutile et le passage proposé
If cells(i,3)="F" and cells(i,4)="Marseille" Then CumulF = CumulF+1fonctionne exactement comme ta correction, sauf que c'est moins compliqué
If cells(i,3)="F" and cells(i,4)="Marseille" Then
CumulF = CumulF+1
End IfBonne continuation.