VBA Excel - programmation formules
Résolu/Fermé
A voir également:
- VBA Excel - programmation formules
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formules excel de base - Guide
- Formule excel si et - Guide
- Formule excel moyenne - Guide
16 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
14 nov. 2008 à 16:14
14 nov. 2008 à 16:14
Bonjour,
Franchement, on peut t'aider pour le faire en VBA mais il me semble qu'à l'énoncé du problème, en créant trés simplement des formules dans les cellules par exemple dans la cellule N17 : =H17-G17
Puis, dans ta première feuille une formule du type : =MOYENNE(Feuil2!N:N)
On obtient le résultat,
Me dire si je me trompe.
Franchement, on peut t'aider pour le faire en VBA mais il me semble qu'à l'énoncé du problème, en créant trés simplement des formules dans les cellules par exemple dans la cellule N17 : =H17-G17
Puis, dans ta première feuille une formule du type : =MOYENNE(Feuil2!N:N)
On obtient le résultat,
Me dire si je me trompe.
Merci pour ton aide, ta solution n'est pas totalement juste, pour avoir une moyenne exacte il faut utiliser dans la colonne N une formule conditionnelle...
c'est ce que j'ai fait en attendant... mais je souhaiterai tout de même pouvoir le faire sous VBA...
merki
c'est ce que j'ai fait en attendant... mais je souhaiterai tout de même pouvoir le faire sous VBA...
merki
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
14 nov. 2008 à 16:28
14 nov. 2008 à 16:28
D'accord,
Il faudrait stp que tu nous montre la partie de code ou tu veux insérer ce calcul et que tu précise la condition à respecter pour le calcul de la moyenne
merci
Il faudrait stp que tu nous montre la partie de code ou tu veux insérer ce calcul et que tu précise la condition à respecter pour le calcul de la moyenne
merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 16:32
14 nov. 2008 à 16:32
Bonjour
ref est le dossier que tu saisis dans ta boite de message
sans gestion d'erreur si mauvaise saisie
lig=columns(2).find(ref,range("B65536"))
colonne N=14 H=8 G=7 à vérifier
cells(lig,14)=cells(lig,8)-cellls (lig,7)
Pour la moyenne
derlig=range("N65536").end(xlup).row
moyenne=application.average(range("N2:N"&derlig))
écris direct sans test
ref est le dossier que tu saisis dans ta boite de message
sans gestion d'erreur si mauvaise saisie
lig=columns(2).find(ref,range("B65536"))
colonne N=14 H=8 G=7 à vérifier
cells(lig,14)=cells(lig,8)-cellls (lig,7)
Pour la moyenne
derlig=range("N65536").end(xlup).row
moyenne=application.average(range("N2:N"&derlig))
écris direct sans test
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour obtenir une moyenne cohérente, je ne dois pas avoir dans la colonne N des valeurs nulles ou négatives... alors j'ai mis comme condition d'effectuer le calcul uniquement si la valeur numérique de la colonne H est renseignée.
Je vous file mon bout de code qui permet la saisi de la valeur numérique, qui est une date :
Sub enregistrement()
Daterep.Hide
Sheets("Contacts").Select
Columns(2).Find(what:=Daterep.numerodossier1.Value).Activate
ActiveCell.Value = Daterep.numerodossier1
ActiveCell.Offset(0, 6).Range("A1").Select
ActiveCell.Value = Daterep.DateReponse
Range("A2").Select
Sheets("Enregistrement").Select
Unload Daterep
End Sub
Je vous file mon bout de code qui permet la saisi de la valeur numérique, qui est une date :
Sub enregistrement()
Daterep.Hide
Sheets("Contacts").Select
Columns(2).Find(what:=Daterep.numerodossier1.Value).Activate
ActiveCell.Value = Daterep.numerodossier1
ActiveCell.Offset(0, 6).Range("A1").Select
ActiveCell.Value = Daterep.DateReponse
Range("A2").Select
Sheets("Enregistrement").Select
Unload Daterep
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 16:38
14 nov. 2008 à 16:38
..."Pour obtenir une moyenne cohérente, je ne dois pas avoir dans la colonne N des valeurs nulles"...
N'importe quoi, les newbies!
Excusez moi d'avoir voulu aider
N'importe quoi, les newbies!
Excusez moi d'avoir voulu aider
Merci pour cette proposition de code très intéressante,
juste un truc que je ne comprend pas tout à fait... que signifie le "N65536"...
si tu peux juste me l'expliquer, ce serait parfait.
juste un truc que je ne comprend pas tout à fait... que signifie le "N65536"...
si tu peux juste me l'expliquer, ce serait parfait.
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
14 nov. 2008 à 16:55
14 nov. 2008 à 16:55
Je propose le code suivant pour le calcul de la moyenne
derlig = Range("N65536").End(xlUp).Row SommeCalc = 0 NombreCalc = 0 For ILIG = 1 To derlig If Cells(ILIG, 14) <> "" And Cells(ILIG, 14) >= 0 Then NombreCalc = NombreCalc + 1 SommeCalc = SommeCalc + Cells(ILIG, 14) End If Next ILIG 'le résultat a mettre dans la cellule est SommeCalc/NombreCalc
Merci bcp...
est-ce que quelqu'un aurait l'obligeance de me dire ce que signifie "N65536" ... ?
je vais le tester aussi, quelle est la différence avec le code proposé ci-dessus ?
merki
est-ce que quelqu'un aurait l'obligeance de me dire ce que signifie "N65536" ... ?
je vais le tester aussi, quelle est la différence avec le code proposé ci-dessus ?
merki
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
14 nov. 2008 à 18:08
14 nov. 2008 à 18:08
C'est tout simplement la dernière cellule de la colonne N (car Excel a 65536 lignes).
DOnc on remonte pour trouver la première cellule non vide.
DOnc on remonte pour trouver la première cellule non vide.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 17:18
14 nov. 2008 à 17:18
Je ne suis pas assez pour te répondre
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 17:30
14 nov. 2008 à 17:30
Petite démo montrant qu'il absurde de dire
.."Pour obtenir une moyenne cohérente, je ne dois pas avoir dans la colonne N des valeurs nulles"...
https://www.cjoint.com/?lorwDuZPUH
les formules statistiques tiennent compte des cellules vides (ne pas confondre vide avec "")
c'est bien parce que c'est pour ton boulot et que...
.."Pour obtenir une moyenne cohérente, je ne dois pas avoir dans la colonne N des valeurs nulles"...
https://www.cjoint.com/?lorwDuZPUH
les formules statistiques tiennent compte des cellules vides (ne pas confondre vide avec "")
c'est bien parce que c'est pour ton boulot et que...
Tout à fait d'accord sur le fait que les formules tiennent compte des cellules vides, par contre ne tient pas compte des valeurs nulles, je précise des valeurs égales à 0....
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 17:43
14 nov. 2008 à 17:43
c'est a toi de gérer avant dans ta formule G2-H2 par ex, le résultat Zéro ou négatif
si tu utilises MoYENNE (AVERAGE en VBA), fonction statistique
tu pourrais écrire:
si(G2-H2<=0;"";G2-H2)
le "" ne sera compté si tu calcules la moyenne en utilisant une fonction non statistique comme somme/NBVAL par exemple
cette particularité t'évite d'avoir à écrire une boucle, d'où simplicité du code et rapidité d'exécution...
si tu utilises MoYENNE (AVERAGE en VBA), fonction statistique
tu pourrais écrire:
si(G2-H2<=0;"";G2-H2)
le "" ne sera compté si tu calcules la moyenne en utilisant une fonction non statistique comme somme/NBVAL par exemple
cette particularité t'évite d'avoir à écrire une boucle, d'où simplicité du code et rapidité d'exécution...
Merci beaucoup pour la formule de la moyenne qui foncionne parfaitement, par contre c'est la formule de la différence qui ne passe pas...
elle ne calcule pas la différence... vous avez une idée ?
elle ne calcule pas la différence... vous avez une idée ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2008 à 18:16
14 nov. 2008 à 18:16
en VBA
if (cells(lig,8)-cellls (lig,7))<=0 then
cells(lig,14)=""
else
cells(lig,14)=cells(lig,8)-cells(lig,7)
end if
if (cells(lig,8)-cellls (lig,7))<=0 then
cells(lig,14)=""
else
cells(lig,14)=cells(lig,8)-cells(lig,7)
end if