Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  valeur max d'une selection aléatoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

valeur max d'une selection aléatoire

n°2183950
mloic
Posté le 04-04-2013 à 08:55:12  profilanswer
 

Bonjour,  
 
j'ai un petit problème... j'aimerais connaître la formule qui me permet d'avoir la valeur max d'une colonne. un exemple sera plus claire  
 
27 23 5
27 23 5
27 23 9
27 23 12
27 23 5
28 00 8  
28 00 12
28 00 11  
28 00 8
 
dans ma première colonne j'ai le jour dans la deuxième l'heure et la troisième la mesure.  
et j'aimerais connaître la valeur max de la troisième colonne pour chaque heure.
 
j'ai fais ce code la mais ça ne marche pas ...
 
x = [Max(Range("C" & i & ":C" & i + NbRevision))]
 
avec i ma variable heure
NbRevision le nombre de mesure par heure
 
en espérant avoir une réponse  
 
cordialement  

mood
Publicité
Posté le 04-04-2013 à 08:55:12  profilanswer
 

n°2183989
Marc L
Posté le 04-04-2013 à 11:09:37  profilanswer
 

 
            Bonjour.

mloic a écrit :

j'ai fais ce code la mais ça ne marche pas ...

            Imprécis ‼   Qu'est-ce qui ne marche pas ?   Message d'erreur ?
 
            Ensuite ce serait judicieux de préciser le logiciel et la version ainsi que de poster le code de la procédure dans son intégralité
            encadré par les balises de code prévues à cet effet comme indiqué dans les règles de ce forum !
 
            Aide primaire :  curseur sur une instruction puis touche F1 …
 
            Edit : y a pas besoin de VBA pour le faire ...  Donc faisable directement dans la feuille de calcul (s'il est question d'Excel).
 
            Astuce :  si vraiment besoin de VBA, une fois que la formule est bonne dans une cellule, cette dernière doit être sélectionnée
                          puis dans la fenêtre  Exécution  de l'environnement VBA :  ? activecell.formula  puis valider.
                          Là cela donne la formule dans le langage natif.
                          Ensuite consulter l'aide de VBA concernant la propriété  WorksheetFunction
                          et la  Liste des fonctions de feuille de calcul disponibles dans Visual Basic  …


Message édité par Marc L le 04-04-2013 à 11:28:15
n°2184018
mloic
Posté le 04-04-2013 à 12:07:54  profilanswer
 

dsl je suis tout nouveau sur ce forum ...
 
voilà mon code :
 

Code :
  1. For c = 0 To 23
  2. Moyenne = 0
  3. somme = 0
  4. NbRevision = 0
  5. For a = 2 To j
  6.     If Mid(Cells(a, 3), 1, 2) = 18 And Cells(a, 2) = c Then
  7.     NbRevision = NbRevision + 1
  8.     somme = Cells(a, 7).Value + somme
  9.     Sheets("synthese" ).Cells((c + 2), 4).Value = NbRevision
  10.     Sheets("synthese" ).Cells((c + 2), 5).Value = somme
  11.     Sheets("synthese" ).Cells((c + 2), 4).Interior.Color = vbYellow
  12.     Sheets("synthese" ).Cells((c + 2), 4).Borders.Value = 1
  13.     Sheets("synthese" ).Cells((c + 2), 5).Interior.Color = vbYellow
  14.     Sheets("synthese" ).Cells((c + 2), 5).Borders.Value = 1
  15. End If
  16. Next a
  17.     If NbRevision > 0 Then
  18.     Moyenne = somme / NbRevision
  19.     Sheets("synthese" ).Cells((c + 2), 6).Value = Moyenne
  20.     Sheets("synthese" ).Cells((c + 2), 6).Interior.Color = vbYellow
  21.     Sheets("synthese" ).Cells((c + 2), 6).Borders.Value = 1
  22. End If
  23. Next c


 
Avec somme = somme des mesures (pour ensuite calculer la moyenne)  
       NbRevision = nombre de mesure  
       Moyenne= moyenne des mesures par heure
       18 = le jour 18
       c = l'heure  
       a = les 65 000 ligne de la feuille
donc se que j'aimerai c'est d'avoir la valeur max des mesure faites sur l'heure selectionnée
 
Je sais que c'est faisable directement sur excel mais j'ai environ 600 000 mesure sur 3 semaines. De créer un programme VB me ferait gagner beaucoup de temps. Je vous ai fourni mon bout de code sur un jour.
 
J'ai Excel 2003. je n'ai pas besoin d'utiliser "WorksheetFunction" car mon programme est directement attribué à une feuille
 
En espérant que c'est plus clair  
 
Cordialement  
 

n°2184092
Marc L
Posté le 04-04-2013 à 14:51:27  profilanswer
 

mloic a écrit :

je n'ai pas besoin d'utiliser "WorksheetFunction" car mon programme est directement attribué à une feuille

            Moi pas comprendre !
 
            Il est bien sûr possible de ne pas utiliser les fonctions internes d'Excel et de réinventer la roue - au risque qu'elle soit carrée ! -
            mais à quoi bon sachant plus le nombre de lignes à traiter est important plus l'exécution d'une solution pure VBA est lente
            comparée à l'utilisation d'une fonction interne !
 
            Ne voyant pas trop le rapport entre la problématique et le code exposé,
            en reprenant l'exemple des colonnes du premier message copié à partir de la cellule A2 :

Code :
  1. Sub MaxEnColonne4()
  2.     Set Rg = [A2]
  3.  
  4.     For R = 2 To Cells(Rows.Count, 1).End(xlUp).Row
  5.         If Cells(R + 1, 1) <> Rg Then
  6.             Cells(R, 4) = Application.WorksheetFunction.Max(Range(Rg.Offset(, 2), Cells(R, 3)))
  7.                  Set Rg = Cells(R + 1, 1)
  8.         End If
  9.     Next
  10. End Sub


            Edit :  c'est en fait le max par jour mais bon le principe reste correct pour les heures …


Message édité par Marc L le 04-04-2013 à 15:10:26

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  valeur max d'une selection aléatoire

 

Sujets relatifs
Accéder à une valeur particulière au sein d'un arbre (array)Programme VBA trouvant une valeur répondant à des conditions ET/OU
Excel - Liaison en fonction de la valeur d'une cellule[ASP.NET - C#] Récupérer valeur d'un gridview
Générer automatiquement la valeur de l'attribut "src"Génération auto/aléatoire de map pour jeu 2D
Erreur d'execution '9' : L'indice n'appartient pas à la sélectionSelection des ImagesBox
Afficher ligne de la valeur recherchéExport Feuille Excel en valeur avec cellule fusionnées
Plus de sujets relatifs à : valeur max d'une selection aléatoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR