Calcul avec conditions sous VBexcel [Résolu/Fermé]

Signaler
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
Bonjour,
Est-ce possible de calculer des données selon plusieurs conditions, je m'explique : et comme on dit les desseins valent mieux que les grands discours donc je m'exécute ( pas vraiment un dessein mais bon :) ).

Ceci n'est qu'un exemple :

lieu     |    semestre     |    resultat

paris   |    1er semestre |    14

paris   |    1er semestre |    24

lyon    |    1er semestre |    13

lyon    |    2e semestre  |    10

paris   |   2e semestre   |    30


Est-il possible par exemple de faire :

Condition
Lieu : Paris
Semestre : 1er semestre

cela affiche les donnée donc :
paris 1er semestre 14
paris 1er semestre 24

et afficher la moyenne des resultat donc ici 19 ( (14 + 24)/2 ) pour ceux qui ont du mal en maths ou qui n'avait pas compris).


MAIS aussi

condition
lieu :
semestre : 1er semestre et cela donnerait

paris 1er semestre 14
paris 1er semestre 24
lyon 1er semestre 12

moyenne : 17

Si c'est possible ce serait vraiment cool.

Afficher le résultat en fonction d'une condition (situé dans la première colonne) maintenant je sais le faire ( merci michel_m et bidouilleu_R ) mais avec plusieurs conditions je dois avouer que je ne sais pas faire ça ... donc si quelqu'un pouvait m'aider ce serait gentil ( ce n'est pas très pressé c'est pas pour le boulot, c'est pour ma culture personnelle ;p ).

Voiloo, A+

1 réponse

Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009

Je met le script que j'ai reçu de michel_m modifié et commenter pour afficher dans un tableau des données d'une feuille "x" sur une feuille "y" ( la où il y a le bouton associé à la macro ) cela donnera peut être des idées à certain.

Je sais qu'il y a des commentaires inutiles mais c'est pour les autres informaticiens voulant reprendre des macros et qui ne connaissent pas forcément le VBA :).



Option Explicit

'Déclaration de variables constantes réutilisées par la suite sans avoir à les déclarés et pouvant être utilisées plusieurs fois
Const colonne_user As Byte = 10

Sub nettoyerSordi()

'On rentre dans la feuille requete de vue et à partir de la case resultatuser (ici A15)
'la fonction va effacer les données sur 5 lignes et colonne_user colonne(variable ici égale à 10 défini ci-dessus en constante (const) )
Sheets("requete de vue").Range("resultatuser").Resize(5, coluser).Clear

End Sub

Sub Sordi()

'L'une des 4 fonctions avec Slogiciel, SRlogiciel et Sperif pour regarder des données en fonction d'une condition via la feuille requete de vue
'La seule fonction sur les 4 détaillée par des commentaires et la mise en forme

'Déclaration des variables de la fonction
Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte

'Donne à la variable valeur, la valeur de la case case_user (ici F2)
valeur = Range("case_user")

'Si la variable valeur est vide alors
If IsEmpty(valeur) Then

'Message d'erreur indiquant la marche à suivre
MsgBox "Veuillez choisir le nom de la personne ( 1ère lettre du prénom suivi du nom de famille ) pour que la requête fonctionne", vbCritical

'Quitte la fonction
Exit Sub

'Fin Si
End If

'Avec la feuille recherche_ordi
With Sheets("recherche_ordi")

'On donne à la variable comparaison la valeur du nombre de fois où on retrouve la variable valeur dans la colonne 1
comparaison = Application.CountIf(.Columns(1), valeur)

'On redimensionne le tableau avec en ligne le nombre obtenu avec la variable comparaison et en colonne la variable colonne_user
ReDim tablo(comparaison - 1, colonne_user - 1)

'Initialisation de la variable ligne à 0
ligne = 1

'Pour le compteur_y allant de 0 à la valeur du tableau (
For compteur_y = 0 To UBound(tablo)

'La variable ligne est égale à la ligne ou la variable valeur est correcte et s'auto incrémente par la suite
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row

'Pour le compteur_x allant de 0 à la varaible colonne_user
For compteur_x = 0 To colonne_user - 1

'Les valeurs du tableau de compteur_y et compteur_y sont égal aux cellules avec les variables ligne et compteur_x incrémenté de 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next

End With

'Nettoyage de la feuille avec la fonction nettoyerSordi appellé directement pour effacer les données automatiquement si cela n'a pas été fait avant
nettoyerSordi

'Fige le défilement de l'écran
Application.ScreenUpdating = False

'On rentre dans la feuille requete de vue
Sheets("requete de vue").Activate

'Avec la cellule resultatuser, on dimensionne en partant de la cellule la taille du tableau
With Range("resultatuser").Resize(comparaison, colonne_user)

'Donne les valeurs récolté dans le tableau
.Value = tablo

'Encadre le tableau
.Borders.Weight = xlThin
End With

End Sub

Voiloo A+ et merci d'avance