Un autre pb mais en vb excel

Résolu
cs_guizmo59 Messages postés 31 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 9 mars 2006 - 28 janv. 2005 à 14:34
adn28 Messages postés 91 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 16 mars 2005 - 15 févr. 2005 à 15:08
Private Sub transfert()
Dim vnomfeuille As String
Dim vmatiere As String
Dim vnummatiere As Integer
Dim vnumeleve As Integer
Dim vnomeleve As String
Dim vprenomeleve As String
Dim vnote As String
Dim vsur As String
Dim i As Integer
Dim j As Integer
Dim velevetraite As Integer
Dim vmatieretraite As Integer
Dim vnombreds(1 To 10) As Integer
Dim vnombrenote As Integer 'Mémorise le nombre total de notes par élève
Dim vCellule As String 'Mémorise le nom de la cellule de démarrage pour la feuille Test
Dim vDecalage As Integer 'Mémorise le nombre de cellule à décaler pour mémoriser les informations
Dim vClasse As String 'Mémorise le nom de la classe traitée


Worksheets("test").Activate
Range("A2").Activate
Do
'Initialisation du nombre de ds à 0
For i = 1 To 10
vnombreds(i) = 0
Next i
vCellule = "A2"
vnombrenote = 0
'offset permet le deplacement dans la feuille
vClasse = ActiveCell.Value
vnomfeuille = ActiveCell.Value & " " & ActiveCell.Offset(0, 8).Value
If ActiveCell.Offset(0, 8).Value = "1" Then
vnomfeuille = vnomfeuille & "ère période"
Else
vnomfeuille = vnomfeuille & "ème période"
End If
Worksheets(vnomfeuille).Activate
Range("c1").Activate
Worksheets("test").Activate
velevetraite = ActiveCell.Offset(0, 9).Value
Do
vnummatiere = ActiveCell.Offset(0, 3).Value
Select Case vnummatiere
Case Is = 1
vmatiere = "LITTERATURE(Dire,Lire,Erire)"
Case Is = 2
vmatiere = "OBSERVATION REFLECHIE DE LA LANGUE FRANCAISE Grammaire - Conjugaison - Ortographe - Vocabulaire "
Case Is = 3
vmatiere = "HISTOIRE - GEOGRAPHIE"
Case Is = 5
vmatiere = "MATHEMATIQUES"
Case Is = 6
vmatiere = "SCIENCES EXPERIMENTALES ET TECHNOLOGIE"
Case Else
vmatiere = ""
End Select
Do
vnombreds(vnummatiere) = vnombreds(vnummatiere) + 1
ActiveCell.Offset(1, 0).Activate
Loop Until vnummatiere <> ActiveCell.Offset(0, 3).Value Or velevetraite <> ActiveCell.Offset(0, 9).Value
vnombrenote = vnombrenote + vnombreds(vnummatiere)
If vmatiere <> "" Then
Worksheets(vnomfeuille).Activate
ActiveCell.Value = vmatiere
ActiveCell.Offset(0, vnombreds(vnummatiere) + 1).Activate
Worksheets("test").Activate
Else
'Mémorisation d'une valeur négative pour indiquer que cette matière n'est pas à traiter
vnombreds(vnummatiere) = -vnombreds(vnummatiere)
End If
Loop Until velevetraite <> ActiveCell.Offset(0, 9).Value
Worksheets(vnomfeuille).Activate
ActiveCell.Value = "Total sur 100"
ActiveCell.Offset(0, 1).Value = "Total sur 20"
'Retour au départ pour gérer la suite de l'entête
Range("B2").Activate
Worksheets("test").Activate
Range(vCellule).Activate
'Ajouter dans cette boucle, une boucle qui gère selon les matières (à la fin de chaque matière il faut ajouter une colonne moyenne) en utilisant le tableau vnummatiere où on a mémorisé le nombre de notes par matière
For vnummatiere = 1 To 10
'Pour chaque note de la matière
For j = 1 To vnombreds(vnummatiere)
i = 0
'Tant que la note est abs on passe à l'élève suivant pour la même matière
While ActiveCell.Offset(i, 6).Value = "abs"
i = i + vnombrenote
Wend
vsur = ActiveCell.Offset(i, 7).Value
Worksheets(vnomfeuille).Activate
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = vsur
Worksheets("test").Activate
ActiveCell.Offset(1, 0).Activate
Next j
'Création de la colonne moyenne pour la matière
If vnombreds(vnummatiere) > 0 Then
Worksheets(vnomfeuille).Activate
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = "Moy"
Worksheets("test").Activate
Else
ActiveCell.Offset(-vnombreds(vnummatiere), 0).Activate
End If
Next vnummatiere

'Retour au départ pour gérer les élèves (avant on ne fait que créer les entêtes des colonnes)
Worksheets(vnomfeuille).Activate
Range("A3").Activate
Worksheets("test").Activate
Range(vCellule).Activate
'Mémorisation du nombre d'élèves traités pour se repositionner dans les formules et savoir si on doit griser ou pas la ligne
velevetraite = 0
Do
velevetraite = velevetraite + 1
vnomeleve = ActiveCell.Offset(0, 1).Value
vprenomeleve = ActiveCell.Offset(0, 2).Value
Worksheets(vnomfeuille).Activate
ActiveCell.Value = vnomeleve
ActiveCell.Offset(0, 1).Value = vprenomeleve
'Permet de connaître le décalage à faire pour la mémorisation des valeurs
vDecalage = 2
Worksheets("test").Activate
'Pour chaque matière
For vnummatiere = 1 To 10
'Pour chaque ds de la matière
For j = 1 To vnombreds(vnummatiere)
vnote = ActiveCell.Offset(0, 6).Value
Worksheets(vnomfeuille).Activate
If vnote = "abs" Then
ActiveCell.Offset(0, vDecalage).Value = ""
Else
ActiveCell.Offset(0, vDecalage).Value = vnote
End If
vDecalage = vDecalage + 1
Worksheets("test").Activate
ActiveCell.Offset(1, 0).Activate
Next j
'Si la matière est traitée, mémorisation des formules en fin de matière
If vnombreds(vnummatiere) > 0 Then
Worksheets(vnomfeuille).Activate
ActiveCell.Offset(0, vDecalage).FormulaR1C1 = "=IF((RC[" & -vnombreds(vnummatiere) & "]:RC[-1]="");"";AVG((SUM(RC[" & -vnombreds(vnummatiere) & "]:RC[-1])/SUM(R[" & -velevetraite & "]C[" & -vnombreds(vnummatiere) & "]:R[" & -velevetraite & "]C[-1]))*10))"
vDecalage = vDecalage + 1
Worksheets("test").Activate
Else
ActiveCell.Offset(-vnombreds(vnummatiere), 0).Activate
End If
Next vnummatiere
'Mémorisation des formules en fin de ligne
Worksheets(vnomfeuille).Activate
ActiveCell.Offset(0, vDecalage).FormulaR1C1 = "somme" 'Mettre la formule pour calculer la somme de toutes les matières
ActiveCell.Offset(0, vDecalage + 1).FormulaR1C1 = "sur 20" 'Mettre la formule pour ramener la somme sur 20 points
ActiveCell.Offset(1, 0).Activate
Worksheets("test").Activate
Loop Until ActiveCell.Value <> vClasse
Loop Until ActiveCell.Value = ""




End Sub
mon pbc'est la ligne rouge j'aimerais savoir quel est le code pour la formule
en faite je desre pouvoir mettre une formule dans la colene moyenne correspondante pour pouvoir calculer la moyenne sans que les notes de la matiere ou ya un blanc ne soit pas comptabiliser en acces sa donne
SI(C:C"";"";MOYENNE((SOMME(C4:C4)/SOMME(C2:C2))*10))
j'amerais donc pouvoir integrer cette foncto avec le code vba pour pouvoir l'avoir automatiquement dans la collonne moyenne

je sais pas si la syntaxe est bone pourtant cela me semble bon
pouvez vous m'aider

31 réponses

cs_guizmo59 Messages postés 31 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 9 mars 2006
1 févr. 2005 à 09:17
nrmale que y'a rien dans ton post?
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 09:22
;-) non c ma fote... Ca ramait tellement l'affichage que j'ai appuyer
sur Ajouter ... J'ai fermé la fenêtre mais trop tard le msg était déjà
parti...


madbob
0
cs_guizmo59 Messages postés 31 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 9 mars 2006
1 févr. 2005 à 09:29
tu veux pas le fichier par hasard
je peux te le fournir en le mettant comme source ou par mail ou msn comme tu veux
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 09:44
Je viens de t'envoyer un mail via CS



C'est comme tu veux on a aussi cette solution...

madbob
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 11:38
Je viens de t'envoyer un mail parcequ'il y a quelques petits détail fonctionnels qui me paraissent curieux...

madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 14:10
J'ai besoin de ces infos pour continuer car je dois savoir

notamment si la moyenne est (12 + 0)/2 ou 12 en cas d'absence...


j'ai une autre question :

est-ce que les données sont en permanance accessible dans une base ?...Si c'est la cas on pourrait simplifier tes traitements.


madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
2 févr. 2005 à 14:57
Ca n'a ps l'air de te plaire des masses ?!?



Aidez-moi qu'ils disaient, aidez-moi...

Il sons fous ces gaulois...
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
2 févr. 2005 à 15:32
Je reprend le train en route prob avec le sp2 et la toile
As-tu résolu ton problème ?

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_guizmo59 Messages postés 31 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 9 mars 2006
3 févr. 2005 à 09:54
escuse mi mad bob de ne pas avoir donner de nouvelle avant mes je travail pas le mercredi et oui y'en s qui on de la chance ;)

je regarde sa de suite et je te dit coment sa se passe

et si j'ai des pbs de comprehension ou lors de l'execution

en tout cas je te tire mon chapeau sa fait du bien d'avoir de l'aide

sa change de la competition qu'on peux avoir en bts ou a la fac

vive le partage de conaissance et l'entraide que cela dur toujours
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
3 févr. 2005 à 10:32
madbob pas faché du tout

madbob content




Normalement sur le papier ça marche (c'est de l'algo), si j'ai
correctement interprété le calcul de la moyenne. J'ai eu du mal à
capter car des moyennes sur 12 que j'ai apellé diviseur de matière ne sont pas de ma génération...



Tu peux encore améliorer tout ça sur au moins 2 axes :


<li>Comme tu ne passes plus par le IF, tu peux certainement utiliser une écriture plus standard et moins chiante que R1C1

</li>
<li>Le top du top c'est d'externaliser la règle de gestion dans une
fonction qui retourne une string contenant la formule, ce qui
facilitera la lisibilité et la maintenance du code. Ca apporte aussi de
la robustesse...</li>



Je te laisse réfléchir à tout ça car je sais que tu aimes trouver les solutions



Au plaisir de te lire



A+
madbob
0
adn28 Messages postés 91 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 16 mars 2005
15 févr. 2005 à 15:08
Bonjour,

je suis actuellement en stage et je suis dans la merde totale.

Et je voudrais savoir si y'en a un qui habite à paris ou les alentours qui
pourrait me developper un outil de chiffrage que je lui racheterais si possible
parske j'ai pas le choix il me reste que 3 semaines et si je le fait pas
je perd tout ske j'ai fait, la formation.

Donc je vous fournirais tous les documents necessaires et je ferais
aussi le déplacement.

C'est pas une blague, je suis sérieux, c'est le deséspoir qui parle.

Alors si quelqu'un est interessé, il me fait signe.
car pour une personne qui maîtrise excel et vba n'aurait pas de probleme
à le faire.

Voilà, pour + d'information vous pouvez me contacter aussi au 06.22.48.32.52
ou sur mon adresse mail [mailto:prekse@hotmail.com prekse@hotmail.com] ou sur le forum.

merci
0
Rejoignez-nous