Comparer successivement une liste de données

Bonjour à toutes et tous.

Avant toutes choses, je vous remercie d'ores-et-déjà de prendre connaissance de ma question, et pour l'intérêt que vous y porterez.

Je sollicite votre aide afin d'arriver je l'espère à m'aiguiller sur la marche à suivre sur le tableur Excel.

Ce que je souhaite faire :

J'ai deux classeurs ouverts : dans l'un j'ai une colonne de données et une colonne vide à côté, et dans l'autre j'ai une autre colonne de données.

Ce que j'aimerais faire c'est de prendre une donnée de l'une des colonnes, de la comparer avec les données de l'autre colonne, et de remplir des cellules en conséquence automatiquement. L'idée est de répéter l'opération autant de fois qu'il y a de valeurs dans la première colonne.

Exemple :

Dans un classeur j'ai la colonne :

1,3

2,7

4,8

6,2

9,4

11,1

15,7

Dans l'autre classeur j'ai la colonne :

2

4

7

9

Dans la cellule à côté de chaque valeur du classeur 1, j'aimerais remplir des cellules de la manière suivante : SI(ET(2>1,3;2<2,7;1;""). Et de faire de même avec 4 7 9...bref, toutes les valeurs qui s'y trouveront.

Est-ce possible de faire cela simplement ?

J'espère avoir été clair, et si ce n'est pas le cas je m'en excuse.

Merci à tous pour votre aide !

Rod'

bonjour,

j'avoue avoir du mal à comprendre ce que tu veux faire avec SI(ET(2>1,3;2<2,7;1;""). Et de faire de même avec 4 7 9...bref, toutes les valeurs qui s'y trouveront.

peux-tu nous montrer le résultat qu'il faudrait obtenir pour 2,4,7,9 ? et comment tu parviens à ce réusultat ?

Je me doutais que ça allait manquer de clarté, désolé ! :p Je vais reprendre.

Voici ce que j'ai :

illustration

Ce que j'aimerais faire, c'est prendre une valeur du classeur 2, trouver l'intervalle dans lequel il viendra se classer dans le classeur 1, et remplir la case à la gauche de la valeur d'une des bornes de l'intervalle.

Et faire de même pour chacune des valeurs du classeur 2.

Par exemple, j'aimerais dire : si la valeur 300 est comprise entre 0 et 0,575, remplir la case à gauche de 0,575, sinon passer à l'intervalle suivant.

Les nombres 2,4,7,9 sont des exemples, ce sont des valeurs qu'on doit saisir manuellement.

J'espère avoir été plus clair ! :p

bonjour,

pour moi ce n'est toujours pas clair,

sur base de l'image que tu as postée, quel résultat attends-tu pour 200 ? pour 300 ?

Rebonjour,

Les valeurs 200 et 300 sont des valeurs que je rentre manuellement, et vont conditionner le remplissage de la colonne 1 du classeur 1. Ce que je souhaite faire, c'est prendre 200, comparer aux intervalles successifs (c'est-à-dire entre deux nombres successifs de la colonne 2 du classeur 1). Cette comparaison se fera jusqu'à ce que l'intervalle adéquat soit trouvé. Là en l'occurrence : [187,898 ; 203,990]. En conséquence, la cellule à gauche de 203,990 sera remplie par un 1. Ensuite, on recommence cette opération avec le 300 du classeur 2. Et ainsi de suite, tant qu'il y aura des valeurs dans cette colonne.

Merci pour ta patience, j'espère que cette fois c'est assez clarifié !

bonjour,

une solution

Sub aargh()
    Set ws1 = Workbooks("book1.xlsm").Sheets("sheet1") ' à adapter classeur 1
    Set ws2 = Workbooks("book2.xlsx").Sheets("sheet1") ' à adapter classeur 2
    dlws1 = ws1.Cells(Rows.Count, 2).End(xlUp).Row
    dlws2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To dlws2
        For j = 2 To dlws1
            If ws2.Cells(i, 1) <= ws1.Cells(j, 2) Then
                q = ws1.Cells(j, 1)
                If q = "" Then ws1.Cells(j, 1) = i - 1 Else ws1.Cells(j, 1) = q & "," & i - 1
                Exit For
            End If
        Next j
    Next i
End Sub

Merci pour la solution !

Et désolé pour mon temps de réponse ! ^^

Rechercher des sujets similaires à "comparer successivement liste donnees"