macro

J

JJ

Guest
Bonjour,
Quelqu'un pourrait m'aider à écrire une macro?
J'ai un tableau excel de 8 colonnes (= 8 personnes ) et 366 lignes.
En ligne 1, col 1 à 8 les noms des personnes (par ex : A, B, C, D, E, F ,G, H)
De la ligne 2 à 366 correspondent les 365 jours de l'année.

Les cellules de A2 à H366 peuvent être remplies de 0 (les personnes n'ont pas emprunté un livre par ex un jour ) ou de 1 (elle ont emprunté un livre un jour)
je voudrais que la macro me sorte les 3 personnes qui ont A LA FOIS:
- emprunté le plus de livres (= le plus de nombre 1 dans la colonne)
et
- n'ont plus emprunté de livres depuis le plus longtemps possible (= le max de 0 apres un 1 (emprunt) dans la colonne en remontant du fond de chaque colonne)
Qui a une idée?
merci et bon dimanche
JJ
 

groussel

XLDnaute Nouveau
Bonjour JJ,

Ce serait pas mal de mettre le fichier histoire d'être sûr que ma compréhension est conforme à l'énnoncé cité.

Si j'ai bien compris, on est pas obligé de passer par des macros mais si c'est ce que tu souhaites, y'a no pb :p

A plus,
 
J

JJ

Guest
je n'ai pas de programme pour compresser mon fichier et il faut le faire pour envoyer au forum

je vais m'expliquer davantage:

Sur 365 jours, une personne peut en avoir loué 1 livre (donc 364 zero et 1 un dans sa colonne) et une autre 365 livres (donc une colonne entierement remplie de 1)

je veux connaitre les 3 personnes parmi les 8 personnes , qui m'ont , au bout de 365 jours ou plus , emprunté le plus de livres (donc le plus de 1 dans sa colonne) -- ET ne m'en a plus emprunté depuis le plus longtemps possible (donc le maximum de 0 en remontant jusqu'à rencontrer un 1 dans sa colonne)

j'ai commencé un peu la macro en tatonnant...

Dim I, x, a,b,......h As Integer
I=Feuil1.Range('A400').End(xlUp).Row
Feuil1.Cells(I+1,9).FormulaLocal = '=Somme(A:A)'
....etc
Feuil1.Cells(I+1,17).FormulaLocal='=Somme(H:H)'
'(j'ai mis dans les colonnes suivantes (IàO) le total de chaque colonne A à H pour avoir le nombre de prets par personne)
For x = I To 2 Step-1
Do While Cell(I,1)<>1
a=a+1
Do While Cell(I,2)<>1
b=b+1
...etc
Do While Cell(I,8)<>1
h=h+1
Next
Loop
Loop
Loop
mais je bloque pour la double condition?

le nombre de prets pour chaque colonne de A à H (somme de 1) en resultat dans colonne de I à O
et le nombre de 0 avant un 1 dans les variables a à h?

Est ce bon jusque là?
merci
JJ
 
J

JJ

Guest
RECTIF:
Il ne faut pas la condition ET car je l'ai fait 'manuellement', aucune personne ne correspond aux 2 criteres a la fois, il faut 2 resultats separes:
les personnes ayant le plus emprunté (= le plus de 1 par colonne)
Les personnes n'ayant pas emprunté depuis longtemps (le plus de 0 avant un 1 en remontant la colonne)
merci
JJ
 

ZZR09

XLDnaute Occasionnel
Bonsoir JJ, le forum,

Je ne me suis pas trop cassé la tête à chercher des formules dans Excel mais ces calculs doivent être réalisable autrement qu'en VBA.

Je te propose une solution que je n'ai pas vérifiée.

Tu as une formule Excel et deux boutons :
LA formule te calcule le nombre max de livres empruntés dans l'année et te retrouve l'heureux gagnant
le premier bouton te rempli le tableau de façon aléatoire : c'est pour tester le programme.
Le second, te consigne les résultats du max de jours sans emprunts.

la macro du second :

Code:
Sub PlusLongtemps()
Dim c As Range
Dim i, j, cpt1, cpt2 As Integer

For j = 1 To 8
cpt1 = 0
    For Each c In Range(Cells(2, j), Cells(366, j))
        If c.Value = 1 Then
            cpt2 = 0
            For i = 1 To 365 - c.Row
                If c.Offset(i, 0) = 0 Then
                    cpt2 = cpt2 + 1
                Else
                    Exit For
                End If
            Next i
        End If
        If cpt2 > cpt1 Then cpt1 = cpt2
    Next c
Cells(j + 8, 10) = cpt1
Next j
End Sub

En espérant que cela te permettra de continuer.
A+
;) [file name=JJ.zip size=12850]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JJ.zip[/file]
 

Pièces jointes

  • JJ.zip
    12.5 KB · Affichages: 14
  • JJ.zip
    12.5 KB · Affichages: 13
  • JJ.zip
    12.5 KB · Affichages: 13

Discussions similaires

Statistiques des forums

Discussions
300 761
Messages
1 987 018
Membres
209 680
dernier inscrit
frobleyy