Recherche d'infos dans une base de données

Le
MEB
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 êtr=
e
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 !!!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #23933261
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"
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 !!!
MEB
Le #23933321
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
Jacky
Le #23933921
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"
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
Jacky
Le #23934651
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"
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"
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

Publicité
Poster une réponse
Anonyme