Problème fonction index decaler

Bonjour a tous,

j'ai besoin de votre aide pour une formule de mon fichier excel.

Dans ma feuille préparation de tournée sur la colonne D j'utilise une formule de recherche =SI(B5="";"";INDEX('Patient en attente'!$A:$D;EQUIV(B5;'Patient en attente'!$D:$D;0);1)) qui me donne les bons résultats (ici un nom) en fonction d'une adresse situé colonne B et en fonction d'un tableau sur la feuille patient en attente. Mon problème est que pour une adresse je peux avoir plusieurs nom or la formule me donne toujours le même nom. J'ai tenté la formule décaler mais je n'arrive pas a l’intégrer. Auriez vous une idée ?

Je joint mon fichier pour que ce soit plus facile de comprendre mes tableaux et mon problème.

Merci d'avance à vous tous pour votre aide

Antoine

bonjour

je te propose de revoir le principe, dans l'autre sens :

  • un onglet de patients (nom prénom en colonne A, coordonnées dans les colonnes suivantes)
  • une tournée, avec nom prénom en colonne A (à saisir à la main, avec une liste déroulante si possible basée sur colA de Patients)
dans la tournée, toutes les infos d'adresse sont récupérées par des RECHERCHEV. Dans le cas où 2 personnes ont mêmes nom et prénom, tu devras mettre "Durand Pierre" et "Durand Pierre 2" . Il FAUT unicité dans nom prénom.

note : une table c''est une ligne et une seule par donnée, pas 2 comme tu as fait dans Préparation

attention danger grave : le RGPD. Voir ton conseiller juridique.

Bonjour,

Habituellement on part d'un nom, autant que possible unique ( ) pour trouver une adresse.

Toi tu veux faire l'inverse : partir d'une adresse, qui n'est pas unique, et donc pourra fournir plusieurs noms, pour en déterminer un, sans autre critère de choix ! C'est plus sportif ! Mais je ne supputerais pas beaucoup sur tes chances d'aboutir ainsi.

Cordialement.

Bonjour,

par formule ça risque d'être très compliqué.

Je pense que le plus simple est d'établir ta liste des patients avec une macro, en partant de ta liste en R.

Je rejoins l'autre remarque : une seule ligne par visite. Avec le Temps de route =0 si pas de changement d'adresse.

Là tu te compliques la vie.

eric

Bonjour Antoine, le forum,

je te retourne ton fichier modifié :

* à l'ouverture du fichier, tu es sur la 2ème feuille "Préparation tournée"

* la cellule active est D7 ; fais Ctrl n ; ... oui, c'est normal : l'adresse contient le nom d'un illustre inconnu.

* va sur D9 ; fais Ctrl n ; oui, ça aussi, c'est normal : comme tu as qu'un seul patient qui est à cette adresse, ben ça le note, tout simplement. (y'a pas d'lézard, et surtout, y'a aucune ambiguïté possible ! )

* va sur D11 ; fais Ctrl n ; aïe ! là, ça s'complique ! ben oui, mais comment faire autrement ? comme t'as plus d'un patient à cette adresse, faut bien qu'tu fasses un choix ! alors, quel est le n° d'l'heureux gagnant ? tu peux saisir le n° sur un chiffre ou deux ; la présentation avec 2 chiffres, c'est uniquement pour qu'la liste soit bien alignée si y'a plus d'9 copatients à la même adresse (du style « famille Radford », ou « les 101 dalmatiens ») ; tu peux changer d'avis et appuyer sur Echap ➯ valeur 0 ➯ pas de nom ; idem si tu saisis 0, ou un nombre absent de la liste, ou du texte (tu m'diras « quelle idée bizarre ! », mais sait-on jamais ?).

alors, qu'en penses-tu ? j'espère qu'ça te convient, car j'ai pas mieux à proposer ! c'est à prendre ou à laisser !

et ne m'demande pas qu'ça fasse un choix automatique à ta place : j'sais pas faire de code VBA télépathe.

Alt F11 pour voir le code VBA, puis revenir sur Excel

dhany

Bonjour,

moi je comprend que s'il a noté x patients à l'adresse y, c'est qu'il veut voir ces x patients au cours de la même visite.

Il s'agit d'EHPAD.

eric

Bonjour eriiic,

moi j'avais pensé qu'y'a plusieurs patients à la même adresse (car dans le même immeuble), et qu'le docteur voulait voir qu'un seul d'entre eux, et optimiser ses déplacements ! (mais j'crois bien qu'j'ai mal compris ! )

alors si c'est bien comme tu dis, ça simplifie drôlement !

* y'a plus besoin d'faire un choix ➯ utilisation plus simple

* y'a plus besoin de splitter les noms pour en proposer la liste

* code VBA beaucoup simplifié (dont moins de variables)

voici donc la 2ème version :

qui contient ce code VBA :

Option Explicit: Option Compare Text

Sub GetName()
  If ActiveSheet.Name <> "Préparation tournée" Then Exit Sub
  Dim adr$, lg1&: lg1 = ActiveCell.Row
  adr = Trim$(Cells(lg1, 2)): If adr = "" Then Exit Sub
  Dim nom$, chn$, dlig&, lg2&, n%: nom = "?"
  With Worksheets("Patient en attente")
    dlig = .Cells(Rows.Count, 4).End(xlUp).Row
    For lg2 = 2 To dlig
      If Trim$(.Cells(lg2, 4)) = adr Then
        chn = chn & .Cells(lg2, 1) & ", ": n = n + 1
      End If
    Next lg2
  End With
  If n > 0 Then nom = Left$(chn, Len(chn) - 2)
  Cells(lg1, 4) = nom
End Sub

utilisation :

* en D7 : faire Ctrl n? (= adresse inconnue, car non trouvée en 1ère feuille, colonne D)

* en D9 : faire Ctrl nAUGEREAU DENIS (y'a qu'un seul patient à cette adresse, donc 1 seul nom)

* en D11 : faire Ctrl nCHALVERAT RAYMOND, BRICHET RAYMONDE, CHAMPEROUX HUBERT, ..., DRIARD JACQUES (y'a plusieurs patients, mais on peut pas voir tous les noms dans une seule cellule, et c'est pas facile de voir tous les noms dans la barre de formule ! même avec Ctrl Maj u)


@Antoine

attention : y'a 2 versions différentes du fichier, avec une utilisation différente, donc lis aussi mon post précédent :

https://forum.excel-pratique.com/viewtopic.php?p=686982#p686982

(mais j'crois qu'tu vas probablement préférer le 2ème fichier au 1er)

dhany

J'ai l'impression que tu ne tiens pas compte de l'ordre de sa tournée qu'il a mis en R.

Mais bon, ça serait bien qu'il explique complètement le fonctionnement prévu.

Tout cela n'est que suppositions...

eric

@eriiic

tu a écrit :

J'ai l'impression que tu ne tiens pas compte de l'ordre de sa tournée qu'il a mis en R.

si, si, ça tient compte de l'ordre de la tournée en colonne R, car regarde ces cellules de la colonne B :

en B3 : adresse fixe pour "Domicile" de D3 (= son point de départ)

en B5 : =SI(R4="";"";R4)

en B7 : =SI(R5="";"";R5)

en B9 : =SI(R6="";"";R6)

en B11 : =SI(R7="";"";R7)

en B13 : =SI(R8="";"";R8)

en B15 : =SI(R9="";"";R9)

en B35 : =SI(R19="";"";R19)


c'est même pour ne pas écraser ces formules que j'ai mis mon adresse fictive en R5, reprise en B7 ; donc ensuite, comme le code VBA met en colonne D les noms qui correspondent aux adresses de la colonne B, ça fait que par transitivité, c'est selon la colonne R.

et en colonne R, c'est classé dans l'ordre de la tournée, car le Docteur Antoine met les infos dans l'ordre des temps de trajet.

(c'que j'appelle transitivité, c'est que si A = B et B = C, alors A = C ; mais mes cours de maths sont bien loin, alors c'est p't'être un autre nom)


d'toutes façons, maint'nant, c'est mieux d'attendre l'avis d'Antoine : si nécessaire, il pourra apporter tout complément d'info utile.

(j'espère quand même que malgré ses nombreuses visites aux patients, le toubib va pas oublier d'revenir sur son sujet ! )

dhany

Je peux me tromper mais l'adresse R4 peut correspondre à 5 patients, R5 à 3, etc.

Soit 8 visites d'une certaine durée plus 2 déplacements et tu n'as utilisés que 2 lignes jusque là. Ca ne peut pas être mis par une formule comme ça...

Enfin c'est comme ça que je vois le truc. Attendons qu'il rentre de tournée.

les formules en colonne B y étaient déjà ! c'est le demandeur qui les as mises, et j'ai laissé tel quel !

attendons son retour de tournée pour connaître la suite...

dhany

Et on me visite quand ? Vu personne de la journée ! Hier non plus !

coucou MFerrand,

comment va ? c'est juste une petite visite éclair, en passant, car j'suis débordé !

ajout : si tu regardes à la télé un match de foot ou un concert, tu verras du monde !

dhany

Salut MFerrand,

c'est une invitation à une réunion ou à la Réunion ?

J'ai piscine mais je peux me libérer pour la Réunion

eric

Si vous passez dans le coin, faites signe... je serai à proximité ! Mais il faudra attendre novembre, je suis pour le moment à Nice.

Pas de piscine, mais le lagon est à 150 m à vol d'oiseau.

Pour l'immédiat le foot ça me branchera pas ! Un concert, je dirais pas non si cela m'évoque des souvenirs... Je pensais justement au concert de Miles Davis au Festival d'Antibes en juillet 63 . Je ne l'ai pas vu mais entendu, sur l'eau dans la nuit, sur un pédalo emprunté à une plage proche de la Pinède... Mais ça ne m'a pas l'air au programme !

Bonjour MFerrand,

tu a écrit :

sur un pédalo emprunté à une plage proche de la Pinède...

faut pas dire « emprunté » mais : « réquisitionné par l'Armée fédérale des États-Unis » ; les chevaux étaient épuisés, alors fallait bien continuer l'trajet en pédalo !


j'ai une très bonne nouvelle pour toi ! aujourd'hui, un nouveau membre s'est inscrit (blanceric3) :

screen

question subsidiaire : est-ce que les serveurs du site Excel-Pratique pourront assurer si y'a 60 millions de membres qui s'connectent en même temps ? et sans qu'ça tourne au ralenti, à une allure d'oie canadienne gavée (c'est-à-dire à peu près aussi rapide qu'un escargot) ?

dhany

Un eric blanc ! On l'a décoloré !

je crois que blancericIII...

"... est un lointain descendant de cet homme :"
screen

alors bien sûr, au fil des générations successives,

son noble sang bleu a dû se décolorer un peu.

il en a même perdu son accent (aigu).

(pardon eric3, c'est dit sans vouloir t'offenser)

dhany

Bonjour Antoine,

* ta dernière visite sur le forum est du 12 septembre à 12:08

* si tu repasses par ici, merci d'essayer le fichier Excel de ces 2 posts :

https://forum.excel-pratique.com/viewtopic.php?p=686982#p686982

https://forum.excel-pratique.com/viewtopic.php?p=687011#p687011

(c'est 2 fichiers différents, avec une utilisation différente)

puis-je espérer un retour ? (dixit Jean-Eric )

dhany

Rechercher des sujets similaires à "probleme fonction index decaler"