Petit casse-tête pour les féru de la programmation (j'ai essayé et je bugg)
et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés.
Pour unr valeur X j'aimerai savoir :
- quelle est la cellule contenant la valeur la plus grande < X dans le tableau
- quelle est la cellule contenant la valeur la plus petite > X dans le
tableau
J'ai voulu faire une fonction :
- qui ballaye l'ensemble du tableau,
- qui compare chaque contenu avec la valeur de X,
- qui mémorise cette valeur dans une variable PPNP (plus petit nombre
positif) si PPNP est vide ou si valeur < PPNP et valeur > X
- qui mémorise cette valeur dans une variable PGNN (plus grand nombre
négatif) si PGNN est vide ou si valeur > PGNN et valeur < X
elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G'
en argument de la fonction dans une seule colonne ou une seule rangée.
Je ne sais comment faire pour :
- avoir la ligne et la colonne de la cellule qui contient la valeur de PPNP
ou PGNN,
- fonctionner sur plusieurs lignes et plusieurs colonnes,
- gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP ou
PGNN,
- utiliser une autre valeur que X=0,
- utiliser des cellules ni contigue,
sans macro, mais avec une MEFC pour repérer les cellules répondant aux critères et ce même si X est <>0. J'ai supposé que ta plage de cellules A1:V9 s'appelle plg , que la cellule dans laquelle tu portes la valeur X s'appelle variable , que les cellules de la plage plg contiennent toutes des chiffres et ne sont pas vides et enfin qu'aucun de ces chiffres n'est supérieur à 10 puissance 100 ou inférieur à -(10 puissance 100).
Tu portes p.e dans la MEFC de la cellule A1, les deux conditions suivantes
Condition 1: format gras / bleu =(A1-MIN(SI(((plg-variable)*1)>0;(plg-variable)*1;PUISSANCE(10;100))))= variable
Condition 2: format gras / rouge =(A1-MAX(SI(((plg-variable)*1)<0;(plg-variable)*1;-PUISSANCE(10;100)))) =variable
puis tu copies ce format dans toutes les cellules de la plage plg. Dans les conditions décrites précédemment, si tu tapes un nombre dans la plage de cellules appelée variable, alors le nombre le plus proche supérieur à X sera en gras bleu et le plus proche inférieur sera en gras rouge. SI plusieurs nombres répondent à la même condition ( cas de l'égalité de certains d'entre eux) alors, ils auront le même format. Enfin, comme ta demande concernait les nombres strictemnt supérieurs ou inférieurs, les nombres exactement égaux à X ne seront pas mis en valeur.
A+
Bonjour,
sans macro, mais avec une MEFC pour repérer les cellules répondant
aux critères et ce même si X est <>0. J'ai supposé que ta plage de
cellules A1:V9 s'appelle plg , que la cellule dans laquelle tu portes
la valeur X s'appelle variable , que les cellules de la plage plg
contiennent toutes des chiffres et ne sont pas vides et enfin qu'aucun
de ces chiffres n'est supérieur à 10 puissance 100 ou inférieur à
-(10 puissance 100).
Tu portes p.e dans la MEFC de la cellule A1, les deux conditions
suivantes
Condition 1: format gras / bleu
=(A1-MIN(SI(((plg-variable)*1)>0;(plg-variable)*1;PUISSANCE(10;100))))= variable
Condition 2: format gras / rouge
=(A1-MAX(SI(((plg-variable)*1)<0;(plg-variable)*1;-PUISSANCE(10;100)))) =variable
puis tu copies ce format dans toutes les cellules de la plage plg. Dans
les conditions décrites précédemment, si tu tapes un nombre dans la
plage de cellules appelée variable, alors le nombre le plus proche
supérieur à X sera en gras bleu et le plus proche inférieur sera en
gras rouge. SI plusieurs nombres répondent à la même condition ( cas
de l'égalité de certains d'entre eux) alors, ils auront le même
format. Enfin, comme ta demande concernait les nombres strictemnt
supérieurs ou inférieurs, les nombres exactement égaux à X ne
seront pas mis en valeur.
sans macro, mais avec une MEFC pour repérer les cellules répondant aux critères et ce même si X est <>0. J'ai supposé que ta plage de cellules A1:V9 s'appelle plg , que la cellule dans laquelle tu portes la valeur X s'appelle variable , que les cellules de la plage plg contiennent toutes des chiffres et ne sont pas vides et enfin qu'aucun de ces chiffres n'est supérieur à 10 puissance 100 ou inférieur à -(10 puissance 100).
Tu portes p.e dans la MEFC de la cellule A1, les deux conditions suivantes
Condition 1: format gras / bleu =(A1-MIN(SI(((plg-variable)*1)>0;(plg-variable)*1;PUISSANCE(10;100))))= variable
Condition 2: format gras / rouge =(A1-MAX(SI(((plg-variable)*1)<0;(plg-variable)*1;-PUISSANCE(10;100)))) =variable
puis tu copies ce format dans toutes les cellules de la plage plg. Dans les conditions décrites précédemment, si tu tapes un nombre dans la plage de cellules appelée variable, alors le nombre le plus proche supérieur à X sera en gras bleu et le plus proche inférieur sera en gras rouge. SI plusieurs nombres répondent à la même condition ( cas de l'égalité de certains d'entre eux) alors, ils auront le même format. Enfin, comme ta demande concernait les nombres strictemnt supérieurs ou inférieurs, les nombres exactement égaux à X ne seront pas mis en valeur.
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris je copie les données en feuil2 pour les trier, à modifier si besoin feuil2 Youky
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub
"Débutante" a écrit dans le message de news:
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je bugg) et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés. Pour unr valeur X j'aimerai savoir : - quelle est la cellule contenant la valeur la plus grande < X dans le tableau - quelle est la cellule contenant la valeur la plus petite > X dans le tableau
J'ai voulu faire une fonction : - qui ballaye l'ensemble du tableau, - qui compare chaque contenu avec la valeur de X, - qui mémorise cette valeur dans une variable PPNP (plus petit nombre positif) si PPNP est vide ou si valeur < PPNP et valeur > X - qui mémorise cette valeur dans une variable PGNN (plus grand nombre négatif) si PGNN est vide ou si valeur > PGNN et valeur < X elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G' en argument de la fonction dans une seule colonne ou une seule rangée. Je ne sais comment faire pour : - avoir la ligne et la colonne de la cellule qui contient la valeur de PPNP ou PGNN, - fonctionner sur plusieurs lignes et plusieurs colonnes, - gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP ou PGNN, - utiliser une autre valeur que X=0, - utiliser des cellules ni contigue,
Fus-je assez claire ? Qui voudra bien m'aider ?
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris
je copie les données en feuil2 pour les trier, à modifier si besoin feuil2
Youky
Private Sub CommandButton1_Click()
rep = Val(InputBox("Entrer la valeur de X"))
For Each c In Range("A1:V9")
If c.Value <> "" Then
n = n + 1
Feuil2.Cells(n, 1) = c.Value
End If
Next
Feuil2.Select
Feuil2.Columns("A:A").Select
Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
For c = 1 To n
If Feuil2.Cells(c, 1) = rep Then
ppv = Feuil2.Cells(c - 1, 1)
pgv = Feuil2.Cells(c + 1, 1)
End If
Next
Feuil1.Select
For Each c In Range("A1:V9")
If c.Value = ppv Then
c.Select
MsgBox "ppv:" & ppv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
If c.Value = pgv Then
c.Select
MsgBox "pgv:" & pgv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
Next
End Sub
"Débutante" <Dbutante@discussions.microsoft.com> a écrit dans le message de
news: A320C2BB-E0FB-4272-8470-B36432A79224@microsoft.com...
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je
bugg)
et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés.
Pour unr valeur X j'aimerai savoir :
- quelle est la cellule contenant la valeur la plus grande < X dans le
tableau
- quelle est la cellule contenant la valeur la plus petite > X dans le
tableau
J'ai voulu faire une fonction :
- qui ballaye l'ensemble du tableau,
- qui compare chaque contenu avec la valeur de X,
- qui mémorise cette valeur dans une variable PPNP (plus petit nombre
positif) si PPNP est vide ou si valeur < PPNP et valeur > X
- qui mémorise cette valeur dans une variable PGNN (plus grand nombre
négatif) si PGNN est vide ou si valeur > PGNN et valeur < X
elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G'
en argument de la fonction dans une seule colonne ou une seule rangée.
Je ne sais comment faire pour :
- avoir la ligne et la colonne de la cellule qui contient la valeur de
PPNP
ou PGNN,
- fonctionner sur plusieurs lignes et plusieurs colonnes,
- gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP
ou
PGNN,
- utiliser une autre valeur que X=0,
- utiliser des cellules ni contigue,
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris je copie les données en feuil2 pour les trier, à modifier si besoin feuil2 Youky
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub
"Débutante" a écrit dans le message de news:
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je bugg) et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés. Pour unr valeur X j'aimerai savoir : - quelle est la cellule contenant la valeur la plus grande < X dans le tableau - quelle est la cellule contenant la valeur la plus petite > X dans le tableau
J'ai voulu faire une fonction : - qui ballaye l'ensemble du tableau, - qui compare chaque contenu avec la valeur de X, - qui mémorise cette valeur dans une variable PPNP (plus petit nombre positif) si PPNP est vide ou si valeur < PPNP et valeur > X - qui mémorise cette valeur dans une variable PGNN (plus grand nombre négatif) si PGNN est vide ou si valeur > PGNN et valeur < X elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G' en argument de la fonction dans une seule colonne ou une seule rangée. Je ne sais comment faire pour : - avoir la ligne et la colonne de la cellule qui contient la valeur de PPNP ou PGNN, - fonctionner sur plusieurs lignes et plusieurs colonnes, - gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP ou PGNN, - utiliser une autre valeur que X=0, - utiliser des cellules ni contigue,
Fus-je assez claire ? Qui voudra bien m'aider ?
Youky
Oups, j'ai oublié si le x n'est pas compris dans les cellules ici c'est rectifié
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) Exit For End If If Feuil2.Cells(c, 1) > rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c, 1) Exit For End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub "Youky" a écrit dans le message de news: 43bbed93$0$20179$
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris je copie les données en feuil2 pour les trier, à modifier si besoin feuil2 Youky
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub
"Débutante" a écrit dans le message de news:
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je bugg) et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés. Pour unr valeur X j'aimerai savoir : - quelle est la cellule contenant la valeur la plus grande < X dans le tableau - quelle est la cellule contenant la valeur la plus petite > X dans le tableau
J'ai voulu faire une fonction : - qui ballaye l'ensemble du tableau, - qui compare chaque contenu avec la valeur de X, - qui mémorise cette valeur dans une variable PPNP (plus petit nombre positif) si PPNP est vide ou si valeur < PPNP et valeur > X - qui mémorise cette valeur dans une variable PGNN (plus grand nombre négatif) si PGNN est vide ou si valeur > PGNN et valeur < X elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G' en argument de la fonction dans une seule colonne ou une seule rangée. Je ne sais comment faire pour : - avoir la ligne et la colonne de la cellule qui contient la valeur de PPNP ou PGNN, - fonctionner sur plusieurs lignes et plusieurs colonnes, - gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP ou PGNN, - utiliser une autre valeur que X=0, - utiliser des cellules ni contigue,
Fus-je assez claire ? Qui voudra bien m'aider ?
Oups, j'ai oublié si le x n'est pas compris dans les cellules
ici c'est rectifié
Private Sub CommandButton1_Click()
rep = Val(InputBox("Entrer la valeur de X"))
For Each c In Range("A1:V9")
If c.Value <> "" Then
n = n + 1
Feuil2.Cells(n, 1) = c.Value
End If
Next
Feuil2.Select
Feuil2.Columns("A:A").Select
Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
For c = 1 To n
If Feuil2.Cells(c, 1) = rep Then
ppv = Feuil2.Cells(c - 1, 1)
pgv = Feuil2.Cells(c + 1, 1)
Exit For
End If
If Feuil2.Cells(c, 1) > rep Then
ppv = Feuil2.Cells(c - 1, 1)
pgv = Feuil2.Cells(c, 1)
Exit For
End If
Next
Feuil1.Select
For Each c In Range("A1:V9")
If c.Value = ppv Then
c.Select
MsgBox "ppv:" & ppv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
If c.Value = pgv Then
c.Select
MsgBox "pgv:" & pgv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
Next
End Sub
"Youky" <bruno.jeune@wanadoo.fr> a écrit dans le message de news:
43bbed93$0$20179$8fcfb975@news.wanadoo.fr...
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris
je copie les données en feuil2 pour les trier, à modifier si besoin feuil2
Youky
Private Sub CommandButton1_Click()
rep = Val(InputBox("Entrer la valeur de X"))
For Each c In Range("A1:V9")
If c.Value <> "" Then
n = n + 1
Feuil2.Cells(n, 1) = c.Value
End If
Next
Feuil2.Select
Feuil2.Columns("A:A").Select
Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
For c = 1 To n
If Feuil2.Cells(c, 1) = rep Then
ppv = Feuil2.Cells(c - 1, 1)
pgv = Feuil2.Cells(c + 1, 1)
End If
Next
Feuil1.Select
For Each c In Range("A1:V9")
If c.Value = ppv Then
c.Select
MsgBox "ppv:" & ppv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
If c.Value = pgv Then
c.Select
MsgBox "pgv:" & pgv & Chr(10) & _
"ligne " & Selection.Row & Chr(10) & _
"colonne " & Selection.Column
End If
Next
End Sub
"Débutante" <Dbutante@discussions.microsoft.com> a écrit dans le message
de news: A320C2BB-E0FB-4272-8470-B36432A79224@microsoft.com...
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je
bugg)
et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés.
Pour unr valeur X j'aimerai savoir :
- quelle est la cellule contenant la valeur la plus grande < X dans le
tableau
- quelle est la cellule contenant la valeur la plus petite > X dans le
tableau
J'ai voulu faire une fonction :
- qui ballaye l'ensemble du tableau,
- qui compare chaque contenu avec la valeur de X,
- qui mémorise cette valeur dans une variable PPNP (plus petit nombre
positif) si PPNP est vide ou si valeur < PPNP et valeur > X
- qui mémorise cette valeur dans une variable PGNN (plus grand nombre
négatif) si PGNN est vide ou si valeur > PGNN et valeur < X
elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou
'G'
en argument de la fonction dans une seule colonne ou une seule rangée.
Je ne sais comment faire pour :
- avoir la ligne et la colonne de la cellule qui contient la valeur de
PPNP
ou PGNN,
- fonctionner sur plusieurs lignes et plusieurs colonnes,
- gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP
ou
PGNN,
- utiliser une autre valeur que X=0,
- utiliser des cellules ni contigue,
Oups, j'ai oublié si le x n'est pas compris dans les cellules ici c'est rectifié
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) Exit For End If If Feuil2.Cells(c, 1) > rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c, 1) Exit For End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub "Youky" a écrit dans le message de news: 43bbed93$0$20179$
J'aime me faire mal à la tête alors j'ai fait ceci , si j'ai bien compris je copie les données en feuil2 pour les trier, à modifier si besoin feuil2 Youky
Private Sub CommandButton1_Click() rep = Val(InputBox("Entrer la valeur de X")) For Each c In Range("A1:V9") If c.Value <> "" Then n = n + 1 Feuil2.Cells(n, 1) = c.Value End If Next Feuil2.Select Feuil2.Columns("A:A").Select Selection.Sort Key1:þuil2.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom For c = 1 To n If Feuil2.Cells(c, 1) = rep Then ppv = Feuil2.Cells(c - 1, 1) pgv = Feuil2.Cells(c + 1, 1) End If Next Feuil1.Select For Each c In Range("A1:V9") If c.Value = ppv Then c.Select MsgBox "ppv:" & ppv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If If c.Value = pgv Then c.Select MsgBox "pgv:" & pgv & Chr(10) & _ "ligne " & Selection.Row & Chr(10) & _ "colonne " & Selection.Column End If Next End Sub
"Débutante" a écrit dans le message de news:
Bonjour,
Petit casse-tête pour les féru de la programmation (j'ai essayé et je bugg) et pourtant j'en ai besoin.
J'ai un tableau A1:V9 rempli de nombres négatifs et positifs non triés. Pour unr valeur X j'aimerai savoir : - quelle est la cellule contenant la valeur la plus grande < X dans le tableau - quelle est la cellule contenant la valeur la plus petite > X dans le tableau
J'ai voulu faire une fonction : - qui ballaye l'ensemble du tableau, - qui compare chaque contenu avec la valeur de X, - qui mémorise cette valeur dans une variable PPNP (plus petit nombre positif) si PPNP est vide ou si valeur < PPNP et valeur > X - qui mémorise cette valeur dans une variable PGNN (plus grand nombre négatif) si PGNN est vide ou si valeur > PGNN et valeur < X elle est ou plus grand nombre négatif)
Pour l'instant c'est OK pour retourner PPNP ou PGNN avec X=0 et 'P' ou 'G' en argument de la fonction dans une seule colonne ou une seule rangée. Je ne sais comment faire pour : - avoir la ligne et la colonne de la cellule qui contient la valeur de PPNP ou PGNN, - fonctionner sur plusieurs lignes et plusieurs colonnes, - gérer plusieurs valeurs identiques dans le tableau correspondant à PPNP ou PGNN, - utiliser une autre valeur que X=0, - utiliser des cellules ni contigue,
Fus-je assez claire ? Qui voudra bien m'aider ?
AV
Une soluce .... Avec la plage nommée "zz" contenant les valeurs (vides possibles et non considérés comme = 0)
Matricielles (validation par ctrl + maj +entrée)
1) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessus, dans la plage "zz" RESSE(MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*COLONNE(zz)))
2) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessous, dans la plage "zz" RESSE(MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*COLONNE(zz)))
Un exemple concret là : http://cjoint.com/?bettUTOtX6
AV
Une soluce ....
Avec la plage nommée "zz" contenant les valeurs (vides possibles et non
considérés comme = 0)
Matricielles (validation par ctrl + maj +entrée)
1) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessus, dans
la plage "zz"
RESSE(MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*COLONNE(zz)))
2) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessous, dans
la plage "zz"
RESSE(MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*COLONNE(zz)))
Un exemple concret là :
http://cjoint.com/?bettUTOtX6
Une soluce .... Avec la plage nommée "zz" contenant les valeurs (vides possibles et non considérés comme = 0)
Matricielles (validation par ctrl + maj +entrée)
1) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessus, dans la plage "zz" RESSE(MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MIN(SI((zz>=X)*(zz<>"");zz)))*COLONNE(zz)))
2) Adresse de la valeur de "X" ou de la valeur la plus proche au-dessous, dans la plage "zz" RESSE(MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*LIGNE(zz));MAX((zz=MAX(SI((zz<X)*(zz<>"");zz)))*COLONNE(zz)))
Un exemple concret là : http://cjoint.com/?bettUTOtX6
AV
Débutante
Un grand MERCI à anonymousA, ainsi qu'à Youky et surtout à AV.
Je ne sais pas ce qu'est une MEFC (je vais faire une recherche).
J'avais donné la taille A1:V9 à titre d'exemple. J'ai recopié le code de la fonction, pour l'étudier et l'adapter par la suite.
Avec l'exemple joint par AV, c'est super génial, j'ai pû comprendre "in-situ"
Encore une fois MERCI
Un grand MERCI à anonymousA, ainsi qu'à Youky et surtout à AV.
Je ne sais pas ce qu'est une MEFC (je vais faire une recherche).
J'avais donné la taille A1:V9 à titre d'exemple.
J'ai recopié le code de la fonction, pour l'étudier et l'adapter par la suite.
Avec l'exemple joint par AV, c'est super génial, j'ai pû comprendre "in-situ"