Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Précisions sur RECHERCHEV

13 réponses
Avatar
michir
Bonsoir,
Qui peut me donner des pr=E9cisions sur le fonctionnement et la syntaxe de =
'=3DRECHERCHEV(9^9;A:A) pour trouver la derni=E8re valeur num=E9rique d'une=
colonne ?
Je ne comprends pas l'argument 9^9 , o=F9 peut on trouver une liste de ces =
arguments qui permettent de d=E9tourner l'utilisation classique de RECHERCH=
EV ?
Merci =E0 tous
Michel

3 réponses

1 2
Avatar
MichD
C'est la troisième fois que tu poses la même question. Si les réponses précédentes ne satisfont pas ta demande, tu devrais
dire en quoi la ou les réponses obtenues ne répondent pas à tes attentes et demeurer sur le même fil de discussion.

C'est ma dernière réponse sur le sujet : Je suppose que toutes les feuilles des 12 mois de l'année ont la même disposition.

La fonction personnalisée doit être copiée dans un module STANDARD dans ton classeur.

Pour calculer une date d'un mois particulier, tu écris : =LePlein("septembre") et ce peu importe
le nom de la feuille dans laquelle tu écris la formule. (ce n'est qu'un d'exemple)

Si tu as plusieurs mois dans un classeur, et tu veux connaître la toute dernière date où un plein
a été fait peu importe le mois, tu inscris la formule suivante : =LePlein() sans nommer un mois particulier.
Dans le classeur tu peux avoir 1 mois, 2 mois, 6 mois ou 12 mois, tu obtiendras le résultat escompté.

Afin de s'assurer que le nom des onglets représentant le mois a la même orthographe que la fonction,
j'ai utilisé cette petite procédure :
'-----------------------------
Sub test()
'pour nommer les feuilles avec la bonne orthographe
For A = 1 To 12
LeMois = Format(DateSerial(2011, A, 1), "MMMM")
Worksheets(A).Name = Application.Proper(LeMois)
Next
End Sub
'-----------------------------

La fonction à être copiée dans un module standard
'---------------------------------------------
Function LePlein(Optional NomFeuille As String)
Dim A As Integer, LeMois As String
Dim T(), Ligne As Long, B As Integer

Application.Volatile
On Error Resume Next

Select Case NomFeuille
Case Is = ""
B = 12
Case Else
B = 1
LeMois = NomFeuille
End Select

For A = 1 To B
If B <> 1 Then
LeMois = Format(DateSerial(2011, A, 1), "MMMM")
End If
With Worksheets(LeMois)
If Err = 0 Then
Ligne = Evaluate("MAX(IF(" & .Name & _
"!A12:A37=""(P)"",ROW(" & .Name & "!A12:A37)))")
If .Range("B" & Ligne) <> "" Then
ReDim Preserve T(1 To A)
T(A) = CLng(.Range("B" & Ligne))
End If
Else
Err.Clear
End If
End With
Next
If Application.Max(T) = 0 Then
LePlein = "Absent"
Else
LePlein = CDate(Application.Max(T))
End If
End Function
'---------------------------------------------


MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Je joins un fichier pour mieux me faire comprendre.
J'aimerais trouver une requête qui me renvoie la date du dernier plein
effectué à savoir vendredi 30 septembre 2011 Je suppose qu'elle sera ï¿œ base
d'une combinaison INDEX et EQUIV... A moins qu'il y ait mieux ?
Michel
Pour compliquer le problème, je raisonne sur 12 feuilles. Mais à défaut, sur
une feuille, cela serait déjà pas mal

http://www.cijoint.fr/cjlink.php?file=cj201110/cijdyHm4CA.xlsx
Avatar
MichD
Une précision : Tu dois appliquer un format date à la cellule contenant la fonction.



MichD
------------------------------------------
Avatar
bcar
Oui, si les réponses ne sont pas satisfaisant c'est peut être que la
manière d'aborder le sujet n'est pas la bonne (trop de restriction dès
le départ, explication pas assez générale du problème...)

Pourquoi vouloir mettre les données dans des onglets différent ?
Ne vaudrait-il pas mieux les disposer toutes dans un seul onglet quitte
à avoir des onglets (supplémentaires) de présentation qui reprendraient
les données de l'onglet principal.
Il serait alors beaucoup plus aisé de manipuler ces données et cela
t'ouvrirait de nouvelle possibilité (TCD, filtres...)

bcar

Le 27/10/2011 19:27, MichD a écrit :
C'est la troisième fois que tu poses la même question. Si les réponses précédentes ne satisfont pas ta demande, tu devrais
dire en quoi la ou les réponses obtenues ne répondent pas à tes attentes et demeurer sur le même fil de discussion.

C'est ma dernière réponse sur le sujet : Je suppose que toutes les feuilles des 12 mois de l'année ont la même disposition.

La fonction personnalisée doit être copiée dans un module STANDARD dans ton classeur.

Pour calculer une date d'un mois particulier, tu écris : =LePlein("septembre") et ce peu importe
le nom de la feuille dans laquelle tu écris la formule. (ce n'est qu'un d'exemple)

Si tu as plusieurs mois dans un classeur, et tu veux connaître la toute dernière date où un plein
a été fait peu importe le mois, tu inscris la formule suivante : =LePlein() sans nommer un mois particulier.
Dans le classeur tu peux avoir 1 mois, 2 mois, 6 mois ou 12 mois, tu obtiendras le résultat escompté.

Afin de s'assurer que le nom des onglets représentant le mois a la même orthographe que la fonction,
j'ai utilisé cette petite procédure :
'-----------------------------
Sub test()
'pour nommer les feuilles avec la bonne orthographe
For A = 1 To 12
LeMois = Format(DateSerial(2011, A, 1), "MMMM")
Worksheets(A).Name = Application.Proper(LeMois)
Next
End Sub
'-----------------------------

La fonction à être copiée dans un module standard
'---------------------------------------------
Function LePlein(Optional NomFeuille As String)
Dim A As Integer, LeMois As String
Dim T(), Ligne As Long, B As Integer

Application.Volatile
On Error Resume Next

Select Case NomFeuille
Case Is = ""
B = 12
Case Else
B = 1
LeMois = NomFeuille
End Select

For A = 1 To B
If B <> 1 Then
LeMois = Format(DateSerial(2011, A, 1), "MMMM")
End If
With Worksheets(LeMois)
If Err = 0 Then
Ligne = Evaluate("MAX(IF(" & .Name & _
"!A12:A37=""(P)"",ROW(" & .Name & "!A12:A37)))")
If .Range("B" & Ligne) <> "" Then
ReDim Preserve T(1 To A)
T(A) = CLng(.Range("B" & Ligne))
End If
Else
Err.Clear
End If
End With
Next
If Application.Max(T) = 0 Then
LePlein = "Absent"
Else
LePlein = CDate(Application.Max(T))
End If
End Function
'---------------------------------------------


MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Je joins un fichier pour mieux me faire comprendre.
J'aimerais trouver une requête qui me renvoie la date du dernier plein
effectué à savoir vendredi 30 septembre 2011 Je suppose qu'elle sera ï¿œ base
d'une combinaison INDEX et EQUIV... A moins qu'il y ait mieux ?
Michel
Pour compliquer le problème, je raisonne sur 12 feuilles. Mais à défaut, sur
une feuille, cela serait déjà pas mal

http://www.cijoint.fr/cjlink.php?file=cj201110/cijdyHm4CA.xlsx



1 2