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

Recherche d'infos dans une base de données

4 réponses
Avatar
MEB
Bonjour,

Dans un m=EAme fichier Excel, j'ai les deux feuilles suivantes :

Base de donn=E9es
A - Num=E9ro de dossier
B - Date de d=E9but
C - Date de fin
D - Milieu de vie

Liste des =E9v=E9nements
A - Num=E9ro de dossier (correspondant au m=EAme de la feuille Base de
donn=E9es)
B - Date d'=E9v=E9nement
C - Milieu de vie (qui est vide)

Je voudrais que dans la colonne C (Milieu de vie) de la feuille Liste
des =E9v=E9nements le milieu de vie de la feuille Base de donn=E9es vienne
s'inscrire en tenant compte des deux informations suivantes :

1 - Num=E9ro de dossier
2 - Que le milieu de vie qui appara=EEt corresponde au milieu de vie
actif au moment de l'=E9v=E9nement. Donc la date d'=E9v=E9nement doit =EAtr=
e
entre la date de d=E9but et la date de fin de la base de donn=E9es.

Je ne sais pas si ceci peut se faire par une formule dans la cellule
ou si je dois cr=E9er une macro mais peu importe la fa=E7on, je suis
convaincue qu'il y a quelques choses de possible.

J'esp=E8re que je suis assez claire dans mes explications.

Merci beaucoup !!!

4 réponses

Avatar
Jacky
Bonsoir,

La plage des numéros de dossiers nommée "Ndossier"
En c2 de la feuille "liste des événements"

=SI(ET(B2>DECALER(INDEX(Ndossier;EQUIV(A2;Ndossier;0);1);;1);B2<DECALER(INDEX(Ndossier;EQUIV(A2;Ndossier;0);1);;2));DECALER(INDEX(Ndossier;EQUIV(A2;Ndossier;0);1);;3);"")

--
Salutations
JJ


"MEB" a écrit dans le message de news:

Bonjour,

Dans un même fichier Excel, j'ai les deux feuilles suivantes :

Base de données
A - Numéro de dossier
B - Date de début
C - Date de fin
D - Milieu de vie

Liste des événements
A - Numéro de dossier (correspondant au même de la feuille Base de
données)
B - Date d'événement
C - Milieu de vie (qui est vide)

Je voudrais que dans la colonne C (Milieu de vie) de la feuille Liste
des événements le milieu de vie de la feuille Base de données vienne
s'inscrire en tenant compte des deux informations suivantes :

1 - Numéro de dossier
2 - Que le milieu de vie qui apparaît corresponde au milieu de vie
actif au moment de l'événement. Donc la date d'événement doit être
entre la date de début et la date de fin de la base de données.

Je ne sais pas si ceci peut se faire par une formule dans la cellule
ou si je dois créer une macro mais peu importe la façon, je suis
convaincue qu'il y a quelques choses de possible.

J'espère que je suis assez claire dans mes explications.

Merci beaucoup !!!
Avatar
MEB
Bonjour Jacky,

Merci pour ta proposition, ça fonctionne mais seulement qu'à moitié e t
je t'explique pourquoi.

Dans ma base de données j'ai des numéros de dossiers qui reviennent en
doublons. Par exemple le dossier # 2515

- à habité le milieu de vie Madame Carole de 2005-05-25 au
2010-01-02,
- il est ensuite déménagé dans le milieu de vie de Monsieur Denis de
2010-01-03 au 2011-01-08
- et depuis le 2011-01-09 il habite le milieu de vie de Madame
Chantal.

Ce qui veut dire que 3 lignes existent pour le même numéro de dossier.
La formule que tu me proposes va chercher le premier milieu de vie
rencontré sans se soucier de la date de l'événement par rapport au
milieu où il habitait à ce moment.

Je ne sais pas si tu comprends ??

Merci
Avatar
Jacky
Re..
Essaye cette macro
En adaptant les noms de feuille (Evenement et BDD dans l'exemple)
Feuille "Evenement" étant la feuille de résultat et "BDD" la base de données
'-----------------
Sub jj()
Dim c As Range, d As Range
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Sheets("Evenements")
For Each c In .Range("a2:a" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each d In Sheets("BDD").Range("a2:a" & Sheets("BDD").Cells(.Rows.Count, 1).End(xlUp).Row)
If c = d Then
If .Range("b" & c.Row) > Sheets("BDD").Cells(d.Row, 2) And .Range("b" & c.Row) <
Sheets("BDD").Cells(d.Row, 3) Then
.Range("c" & c.Row) = Sheets("BDD").Cells(d.Row, 4)
End If
End If
Next
Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
'-------------------------

--
Salutations
JJ


"MEB" a écrit dans le message de news:

Bonjour Jacky,

Merci pour ta proposition, ça fonctionne mais seulement qu'à moitié et
je t'explique pourquoi.

Dans ma base de données j'ai des numéros de dossiers qui reviennent en
doublons. Par exemple le dossier # 2515

- à habité le milieu de vie Madame Carole de 2005-05-25 au
2010-01-02,
- il est ensuite déménagé dans le milieu de vie de Monsieur Denis de
2010-01-03 au 2011-01-08
- et depuis le 2011-01-09 il habite le milieu de vie de Madame
Chantal.

Ce qui veut dire que 3 lignes existent pour le même numéro de dossier.
La formule que tu me proposes va chercher le premier milieu de vie
rencontré sans se soucier de la date de l'événement par rapport au
milieu où il habitait à ce moment.

Je ne sais pas si tu comprends ??

Merci
Avatar
Jacky
Ou sous forme de fonction perso

Dans un module standard
'-----------------
Function MilieuDeVie(leNdossier As Range, Ladate As Range) As String
With Sheets("BDD")
For Each c In .Range("a2:a" & .Cells(Rows.Count, 1).End(xlUp).Row)
MilieuDeVie = ""
If leNdossier = c And Ladate > .Cells(c.Row, 2) And Ladate < .Cells(c.Row, 3) Then
MilieuDeVie = .Cells(c.Row, 4)
Exit Function
End If
Next
End With
End Function
'------------------

En c2 de la feuille "Liste des événements"
=MilieuDeVie(A2;B2)

Et recopier vers le bas

--
Salutations
JJ


"Jacky" a écrit dans le message de news: j8v46h$dop$
Re..
Essaye cette macro
En adaptant les noms de feuille (Evenement et BDD dans l'exemple)
Feuille "Evenement" étant la feuille de résultat et "BDD" la base de données
'-----------------
Sub jj()
Dim c As Range, d As Range
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With Sheets("Evenements")
For Each c In .Range("a2:a" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each d In Sheets("BDD").Range("a2:a" & Sheets("BDD").Cells(.Rows.Count, 1).End(xlUp).Row)
If c = d Then
If .Range("b" & c.Row) > Sheets("BDD").Cells(d.Row, 2) And .Range("b" & c.Row) <
Sheets("BDD").Cells(d.Row, 3) Then
.Range("c" & c.Row) = Sheets("BDD").Cells(d.Row, 4)
End If
End If
Next
Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
'-------------------------

--
Salutations
JJ


"MEB" a écrit dans le message de news:

Bonjour Jacky,

Merci pour ta proposition, ça fonctionne mais seulement qu'à moitié et
je t'explique pourquoi.

Dans ma base de données j'ai des numéros de dossiers qui reviennent en
doublons. Par exemple le dossier # 2515

- à habité le milieu de vie Madame Carole de 2005-05-25 au
2010-01-02,
- il est ensuite déménagé dans le milieu de vie de Monsieur Denis de
2010-01-03 au 2011-01-08
- et depuis le 2011-01-09 il habite le milieu de vie de Madame
Chantal.

Ce qui veut dire que 3 lignes existent pour le même numéro de dossier.
La formule que tu me proposes va chercher le premier milieu de vie
rencontré sans se soucier de la date de l'événement par rapport au
milieu où il habitait à ce moment.

Je ne sais pas si tu comprends ??

Merci