VBA compteur pour avoir un ratio
Résolu
ratikuss
Messages postés
2296
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
sur une feuille excel je dispose sur la colonne U des valeurs comme Préventif, Curatif, travaux neuf etc...
Je voudrais faire le ratio Curatif/Préventif , donc je me dirige vers le vba.
J'ai écris ceci mais il me retourne une valeur nulle
Après divers tests, je pense que le soucis vient de l'incrémentation dans mes conditions.
Merci de votre aide.
sur une feuille excel je dispose sur la colonne U des valeurs comme Préventif, Curatif, travaux neuf etc...
Je voudrais faire le ratio Curatif/Préventif , donc je me dirige vers le vba.
J'ai écris ceci mais il me retourne une valeur nulle
Sub Calcul_Ratio()
'declaration des variables
Dim x As Integer
Dim preventif As Integer
Dim curatif As Integer
Dim ratio As Currency
'fin declaration des variables
'on cherche la derniere cellule de la colonne U
Range("U65536").End(xlUp).Offset(1, 0).Select
x = ActiveCell.Row - 1
'fin
For i = 1 To x
If Range("u" & x) = "Préventif" Then
preventif = preventif + 1
End If
If Range("u" & x) = "Curatif" Then
curatif = curatif + 1
End If
Next i
Range("Q7") = curatif / preventif
End Sub
Après divers tests, je pense que le soucis vient de l'incrémentation dans mes conditions.
Merci de votre aide.
A voir également:
- VBA compteur pour avoir un ratio
- Compteur de contractions - Télécharger - Santé & Bien-être
- Compteur communicant - Guide
- Excel compter cellule couleur sans vba - Guide
- Compteur point fléchette excel - Télécharger - Sport
- Vba attendre 1 seconde ✓ - Forum VB / VBA
2 réponses
Mais quel boulet je suis !!
La simple erreur vient du fait de mettre
La simple erreur vient du fait de mettre
Range("u" & x) au lieu de Range("u" & i), tout simplement !!
Merci beaucoup !
j'ai perdu une matiné de boulot à cause de ça , grâce à toi je perdrais pas ma journée.
Encore merci !
Bien compliquées ces boucles et il n'est pas tenu compte du cas "aucun préventif (DIV/0)...
derlig = Range("U65536").End(xlUp).Row Set zone = Range("U1:U" & derlig) nbre_prev = Application.CountIf(zone, "préventif") If nbre_prev > 0 Then Range("Q7") = Application.CountIf(zone, "curatif") / nbre_prev Else MsgBox " aucun préventif ", vbExclamation End Ifsi cette macro vous intéresse, je vous laisse le soin des déclarations...
nota:
Value est la propriété par défaut de range; dans la plupart des cas, il n'est pas nécessaire de l'écrire