Incrementation + fonction + if
Bonjour
Je rencontre un problème et j'ai besoin de votre aide svp. Je n'arrive pas à coder.
Problème:
J ai deux colonnes A et C.
Colonne A: Presence de différent fonds et pour chaque fond des parts différentes (la 7eme lettre est a chaque fois différentes) par exemple:
Exemple parlant:
Toutou3 6. 0
Toutous 4. 1
Toutou0 5. 0
bonjouT 7. 1
bonjouI 8. 0
Colonne C: des valeurs numeriques
J’aimerai pour chaque ligne de la colonne A, identifier les parts du meme fonds et pour chaque part compare les valeurs de la colonne C correspondante et me sélectionne la plus petite.
Lorsqu’il identifie la valeur la plus petite il inscrit un petit 1 dans une colonne D sur la meme ligne que la part sélectionné et 0 sinon. (voir exemple en haut, les chiffres rouges)
Et ca pour 5000 lignes
Merci d’avance pour votre aide.
Ce que j'ai fait, je n'ai fais que pour les 2 premieres valeurs mais il peut y avoir plusieurs lignes appartenant aux memes fonds, ce n'est pas constant.
Dim valmin as integer
If cells(1,1)=cells(1,1).offset(1,0)
Then valmin=worksheet.function.min(cells(1,1),cells(2,1))
else ...
Merci encore si qq un trouve la solution
Salut Inès,
Ça manque cruellement d'infos capitales pour faire du bon boulot !
Première piste de solution que j'adapterai en fonction d'un futur fichier représentatif de la situation réelle de travail.
Le code ci-dessous ne doit absolument pas être exécuté sur ton fichier de travail sous peine de catastrophe !!
Un double-clic sur la feuille démarre la macro.
Celle-ci trie les valeurs avant d'attribuer les 1 et 0.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
'
Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Sort _
key1:=Range("A1"), order1:=xlAscending, _
key2:=Range("C1"), order2:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
Range("D" & x).Value = IIf(Range("A" & x).Value = Range("A" & x - 1).Value, 0, 1)
Next
'
End Sub
A+
Hello,
Merci beaucoup pour ton aider je vais tenter d'être plus clair.
Ci joint un fichier excel, J'aimerai que tant que les lignes de A sont identiques il regarde la valeur min dans la colonne D (seulement sur les lignes A) et que sur la colonnes E il indique par à 1 si c'est la valeur minimal 0 sinon.
Par exemple:
Il y 2 fonds A, j'aimerai qu'il compare les perfs appartenant aux 2 fonds A donc en A2 (perf de 7) et A3 (perf de 4 )et que en colonne E il indique un 0 sur E2 et 1 sur E3 car perf de A2>perf A3.
Et tous ca sur 5000 lignes avec autant de noms différents qui sont déjà triés alphabétiquement.
J'ai oublié de préciser qu'il y a également des données manquantes dans la colonne de perf, parfois les lignes sont vides. Et quand c'est vide je souhaite qu'il n'affiche rien sur la colonne de min.
Merci encore pour ton aide
Salut Inès,
c'est ce que mon code fait déjà mais en triant également la colonne 'Perf' de ta BDD !
Ce dont j'ai besoin, c'est de savoir si je peux trier cette colonne 'Perf' ou si elle doit absolument rester dans cet ordre et/ou si, après traitement, ces deux colonnes (Fonds et Perf) peuvent être retriées selon un autre critère (date ou n° d'ordre...).
Raison pour laquelle nous demandons un fichier anonyme qui soit fidèle à la structure réelle du fichier de travail !
A+
Hello,
Merci pour ton retour rapide.
Voici un fichier ayant la même structure.
Chaque perf est associé à un fond.
Peux tu m'expliquer ton code je ne le comprend pas trop bien stp.
Par contre quand la case de perf est vide le fichier met un 1, je souhaiterai qu'il laisse la case vide
Merci d avance
PS: j'ai eu changement de dernière minute à la place d avoir des lettre j'ai des nombres, mais le principe est le meme, et avec la macro utilisé ca me modifie mes valeurs: