Forums XLPages

Tous les messages (Mth)

« 1 ... 28 29 30 31 32 33 34 ... 36 »
Re: Trier et appliquer une condition
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 05-12-2009 18h12
re :)

Voici une autre version avec plus de gagnants possibles.

Pour les formules utilisées:

. Les zones nommées "Nom" et "Resultat" utilisent les fonctions DECALER() et NBVAL() afin de les rendre dynamiques, l'article "Nommer une plage dynamique" et le fichier qui l'accompagne ICI fournissent des explications et exemples d'utilisation qui je l'espère pourront t'aider à les comprendre facilement.

. Dans la cellule I2 et tirée vers le bas, la formule qui permet d'avoir le classement:
=SI(NBVAL(E:E)();"";GRANDE.VALEUR(Resultat;LIGNES(I$2:I2)))
En la décomposant:

- La fonction LIGNE() indique le numéro de la ligne de référence, sur la ligne 2 =LIGNE() renvoie 2, sur la ligne 25 =LIGNE() renvoie 25.
- La fonction LIGNES() permet d'avoir le nombre de lignes de la zone en référence.
LIGNES(I$2:I2) renverra 1 car il il a une seule ligne dans cette plage. En tirant la formule vers le bas, LIGNES(I$2:I2) devient LIGNES(I$2:I3) puis LIGNES(I$2:I4) etc, le nombre de ligne augment de 1 à chaque fois, cette partie de la formule renvoie donc 1 puis 2 puis 3 etc ...
- NBVAL(E:E) indique le nombre de cellules non vides dans la colonne E
- Le test du début de la formule:
=SI(NBVAL(E:E)();""; etc ...)
permet de savoir si le nombre de lignes dans le tableau de gauche est inférieur ou pas à la ligne où se trouve la formule. Ainsi, si nous sommes sur la 15ème ligne alors qu'il n'y a que 12 participants, on renverra un vide (noté par deux guillemets l'un à coté de l'autre) et on évitera que la formule renvoie #NOMBRE!
Dans le cas contraire, on effectue la calul suivant:
=GRANDE.VALEUR(Resultat;LIGNES(I$2:I2))
- La fonction GRANDE.VALEUR() permet d'obtenir la x-ième plus grande valeur située dans la plage nommée Resultat.
x est calculé grace à la formule LIGNES() vue ci-dessus, la première fois on a donc la premère plus grande valeur de la zone "Résultat", sur la ligne du dessous la 2ème plus grande valeur, etc...


. En cellule H2 tirée vers le bas, cette formule permet de récupérer le nom de la personne ayant obtenu le score indiqué en colonne I:
=SI(I2="";"";INDEX(Nom;EQUIV(I2;Resultat;0);))
La fonction INDEX() va renvoyer la valeur trouvée dans la zone nommée "Nom" du premier tableau, la ligne sur laquelle se trouve cette valeur est calculée par la fonction EQUIV(). Tu peux aller voir l'aide excel qui est très bien sur cette fonction EQUIV(), sourire... sans oublier l'excellent fichier de notre ami Jean Marie sur la fonction INDEX() ICI

. La troisième formule en F3 tirée vers le bas utilise également les fonctions EQUIV() et INDEX():
=SI(ESTNA(EQUIV(A2;$H$2:$H$21;0));"";INDEX($J$2:$J$21;EQUIV(A2;$H$2:$H$21;0);))

simplement, en début de formule, le test permet de renvoyer un vide si la personne recherchée ne fait pas partie de la zone des 20 premiers.
Soit la personne existe dans cette liste et la fonction EQUIV() renverra le numéro de la ligne correspondante, soit elle n'existe pas et la fonction renvoie #NA.
La fonction ESTNA renvoie VRAI si le résultat de la fonction EQUIV() est #NA, et renvoie FAUX dans le cas contraire. SI le résultat est VRAI, pour éviter d'avoir de vilains #NA dans la colonne, on met un vide, si non on fait le calcul.

Voilà Michel, j'espère que ces commentaires pourront t'aider pour ton fichier et te souhaite une bonne soirée,

à bientôt,

mth


Pièce jointe:
zip tri auto(3).zip   [ Taille: 6.15 Ko - Téléchargements: 446 ]
Hors Ligne
Rapport   Haut 

Re: Trier et appliquer une condition
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 05-12-2009 16h31
Bonjour mishka, le forum,

Ce n'est malheureusement pas du VBA comme tu semblais le souhaiter dans ton fichier, mais au cas où cela puisse t'aider quand même voici ci-joint un petit essai par formules permettant je crois de répondre à ta question.

A bientôt,

mth
Pièce jointe:
zip tri auto(2).zip   [ Taille: 8.93 Ko - Téléchargements: 459 ]
Hors Ligne
Rapport   Haut 

Re: Plusieurs entrées dans la même cellule ?
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 22-11-2009 18h25
re,

A mon avis le plus simple et le plus rapide est de prévoir 3 colonnes pour saisir tes 3 montants, puis de mettre une formule permettant d'avoir directement le total des trois.
Je te joins un essai en ce sens.

Bien codialement,

mth
Pièce jointe:
zip INVALIDITÉ3.zip   [ Taille: 6.92 Ko - Téléchargements: 408 ]
Hors Ligne
Rapport   Haut 

Re: Plusieurs entrées dans la même cellule ?
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 22-11-2009 17h37
Bonjour kotoba

Si par exemple ta rente est de 719.41, ta CSG de 45 et ta CRDS de 4, tu sélectionnes ta cellule H3, puis tu commences à saisir un signe = (égal) pour indiquer à excel que ce n'est pas un simple texte que tu saisis mais une formule de calcul. Tu saisis ensuite 719.41 puis le signe + pour faire une addition, puis ton chiffre 45, puis + et enfin 4.
Tu auras donc la formule suivante dans ta cellule:
=719.41+45+4

Tu indiques à Excel que ta saisie est terminée en tapant sur la touche "Enter", et tu verras le résultat de ton calcul s'afficher dans ta cellule (soit ici 768.41)

Je te mets l'exemple en fichier joint, est-ce bien de cela dont tu as besoin?

Bonne soirée,

mth
Pièce jointe:
zip INVALIDITÉ2.zip   [ Taille: 4.50 Ko - Téléchargements: 408 ]
Hors Ligne
Rapport   Haut 

Re: Afficher/Maquer des colonnes
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 21-11-2009 16h26
Bonjour lours,

Ne serait-il pas plus simple de modifier le tableau du dessous pour que les colonnes à masquer ou à afficher correspondent aux colonnes du dessus comme en pièce jointe ?
Bon après-midi,

mth


Edit de 16hh40: je viens de remettre le bon fichier ZIP, je m'étais trompée de fichier




Pièce jointe:
zip AfficherMasquerColonnes4.zip   [ Taille: 20.20 Ko - Téléchargements: 470 ]
Hors Ligne
Rapport   Haut 

Re: recopier une ligne
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 15-11-2009 21h23
re,

un petit dernier pour finir la soirée, avec une insertion d'une ligne en haut du tableau.

Bonne soirée à tous,

mth
Pièce jointe:
zip rebelote ok3.zip   [ Taille: 50.99 Ko - Téléchargements: 567 ]
Hors Ligne
Rapport   Haut 

Re: recopier une ligne
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 15-11-2009 18h07
re,

Dan, si cela peut t'être utile, voici un lien vers le site de Microsoft présentant le pack de conversion. Une fois installé il permet d'ouvrir les fichiers 2007 avec les versions antérieures, ce qui rend bien des services.

Claude40, comme tu ne précises pas si tu veux insérer ta ligne à chaque tableau, ou une seule fois, ou autre, voici un petit aménagement qui permet d'insérer deux lignes après chaque petit tableau, au cas où. Comme je l'ai dit tout à l'heure, insérer une seule ligne à chaque fois oblige à trouver un autre test car Target.Row Mod 2 = 0 ne fonctionnera plus.

Private Sub Worksheet_Change(ByVal Target As Range) 'code pour copie de ligne a revoir
Dim Lg As Integer
Lg = ActiveCell.Row
    If Not Intersect(Target, Range("a11:a" & Lg)) Is Nothing And Target.Row Mod 2 = 0 Then
        Application.EnableEvents = False
            If Target <> "Fin Broyage" Then
                Range("A" & Lg - 1 & ":V" & Lg + 2).Copy
                Range("A" & Lg + 3).Insert Shift:=xlDown
                Range("A" & Lg + 3 & ":V" & Lg + 5).Cells.SpecialCells _
                 (xlCellTypeConstants).ClearContents
                Range("A" & Lg + 3) = Range("A" & Lg - 1)
                Range("C" & Lg + 3) = Range("C" & Lg - 1)
            End If
    End If
        Application.EnableEvents = True
        Application.CutCopyMode = False
End Sub
 

Pour ma part je fais une pause, le temps que tu réfléchisses bien à ce que tu veux obtenir, parce là effectivement ça devient un peu brouillon et nous perdons du temps à faire et refaire.
Prends le temps nécessaire à bien clarifier tes idées, tu peux aussi essayer de tester tout ça toi même, en modifiant et en voyant le résultat.

A bientôt et bonne soirée à tous,

mth
Hors Ligne
Rapport   Haut 

Re: recopier une ligne
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 15-11-2009 15h05
re,

Un essai avec ce code à la place du code de tout à l'heure (j'ai modifié la ligne en rouge):
Private Sub Worksheet_Change(ByVal Target As Range) 'code pour copie de ligne a revoir
Dim Lg As Integer
Lg = ActiveCell.Row
    If Not Intersect(Target, Range("a11:a" & Lg)) Is Nothing And Target.Row Mod 2 = 0 Then
        Application.EnableEvents = False
            If Target <> "Fin Broyage" Then
                Range("A" & Lg - 1 & ":V" & Lg).Copy
                Range("A" & Lg + 1).Insert Shift:=xlDown
                Range("A" & Lg + 1 & ":V" & Lg + 2).Cells.SpecialCells _
                 (xlCellTypeConstants).ClearContents
                Range("A" & Lg + 1) = Range("A" & Lg - 1)
                Range("C" & Lg + 1) = Range("C" & Lg - 1)
            End If
    End If
        Application.EnableEvents = True
        Application.CutCopyMode = False
End Sub
 

Dans ton fichier tu demandes si tu peux rajouter une ligne au dessus du tableau, tu veux dire entre le jaune et le bleu? ou à chaque insertion? ou en entête?
A priori une ligne non, car ça va décaler les lignes paires et impaires, mais deux lignes sans doute oui, le tout est de savoir où, peux-tu préciser?

Cordialement,

mth

Hors Ligne
Rapport   Haut 

Re: recopier une ligne
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 15-11-2009 10h55
bonjour claude40, 

On peut certainement l'écrire plus élégamment mais ce code fonctionne chez moi, je te laisse l'essayer à la place du précédent et nous dire:

Private Sub Worksheet_Change(ByVal Target As Range) 'code pour copie de ligne a revoir
Dim Lg As Integer
Lg = Range("a50").End(xlUp).Row
    If Not Intersect(Target, Range("a11:a" & Lg)) Is Nothing And Target.Row Mod 2 = 0 Then
        Application.EnableEvents = False
            If Target <> "Fin Broyage" Then
                Range("A" & Lg - 1 & ":V" & Lg).Copy
                Range("A" & Lg + 1).Insert Shift:=xlDown
                Range("A" & Lg + 1 & ":V" & Lg + 2).Cells.SpecialCells _
                 (xlCellTypeConstants).ClearContents
                Range("A" & Lg + 1) = Range("A" & Lg - 1)
                Range("C" & Lg + 1) = Range("C" & Lg - 1)
            End If
    End If
        Application.EnableEvents = True
        Application.CutCopyMode = False
End Sub

Bonne journée,

mth

Hors Ligne
Rapport   Haut 

Re: recopier une ligne
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 14-11-2009 22h10

re,

je n'ai pas fait grand chose là dedans mais merci claude40 pour ton retour, du coup j'ai continué à chercher pour que la macro ne se déclenche que sur les lignes paires et pas toutes les cellules de la colonne A:

Private Sub Worksheet_Change(ByVal Target As Range) 'code pour copie de ligne a revoir
Dim Lg As Integer
Lg = Range("a15").End(xlUp).Row
    If Not Intersect(Target, Range("a11:a" & Lg)) Is Nothing And Target.Row Mod 2 = 0 Then
        Application.EnableEvents = False
            If Target <> "Fin Broyage" Then
                Range("A" & Lg - 1 & ":V" & Lg).Copy
                Range("A" & Lg + 1).Insert Shift:=xlDown
                Range("A" & Lg + 1 & ":V" & Lg + 2).ClearContents
            End If
    End If
        Application.EnableEvents = True
        Application.CutCopyMode = False
End Sub


j'ai ajouté ce qui est en rouge, je ne sais pas si c'est bien mais ça a l'air de fonctionner de mon coté (cela consiste à prendre le numéro de ligne et le diviser par 2, pour voir si la division tombe juste ou s'il y a un reste )

Bonne soirée,

mth


Pièce jointe:
zip rebelote2.zip   [ Taille: 50.09 Ko - Téléchargements: 631 ]
Edité par Mth le 15/11/2009 10:57:40
Hors Ligne
Rapport   Haut 

« 1 ... 28 29 30 31 32 33 34 ... 36 »