[Résolu] deux conditions avec recherchev

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Open newbie
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 12 avr. 2018 14:21

[Résolu] deux conditions avec recherchev

Message par Open newbie »

Bonjour,

je dois préparer un fichier pour un publipostage et je me frotte à une complication.
C'est une liste de noms et de prénoms.
les noms sont dans une colonne et les prénoms dans une autre.
J'ai attribué à chaque enfant (il s'agit d'enfants) un créneau horaire. Donc 3 colonnes prénoms / nom / créneaux.
J'ai une seconde feuille qui à toutes les informations pour le publipostage à laquelle je souhaite ajouter le créneau horaire de chaque enfant. Mais comme il y a des fratries je ne peux faire une recherche sur la colonne nom, il y a aussi des prénoms identique donc pas possible de faire la recherche par prénom. Il faute les 2!

Je pensais que: =SI($B2:$C2=";";RECHERCHEV($B2:$C2;$Feuille3.A1:B123;3;0)) fonctionnerait. Et non!


feuille 3
Colonne A= noms
Colonne B = prénoms
Le 3 = colonne D qui est la colonne des créneau.



Merci de votre aide
Dernière modification par Open newbie le 01 juil. 2019 13:10, modifié 1 fois.
windows server 2008 R2 standard / 64bit
libre office 5.4
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1667
Inscription : 15 déc. 2010 08:33

Re: deux conditions avec recherchev

Message par yclik »

Bonjour
il faudrait créer en feuille 3 une nouvelle colonne "Nom Prénom" en Colonne A avec :

Code : Tout sélectionner

=B2&" "&C2
et la fonction RECHERCHEV deviendrait

Code : Tout sélectionner

RECHERCHEV(B2&" "&C2;$Feuille3.A1:E123;4;0)
OpenOffice 4.1.14 sous Windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: deux conditions avec recherchev

Message par Jean-Louis Cadeillan »

Bonsoir,
Outre la solution d'yclick (que je salue au passage !), on peut aussi envisager des solutions matricielles, qui permettent d'éviter la colonne supplémentaire.
Dans le fichier joint, sur la feuille Publipostage, en G2 :

Code : Tout sélectionner

=INDEX(ListeNoms.C$2:C$11;EQUIV(A2&B2;$ListeNoms.A$2:A$11&$ListeNoms.B$2:B$11;0))
La feuille ListeNoms recense les créneaux en fonction des noms et prénoms, $ListeNoms.A$2:A$11&$ListeNoms.B$2:B$11 créent une matrice colonne NomPrénom, exploitée par EQUIV() pour trouver la bonne ligne, celle correspondant à A2&B2, le NomPrénom en cours, ce n° de ligne étant envoyé à INDEX() pour retourner le bon créneau.
La formule se valide par Ctrl+Maj+Entrée. Cette formule est donc matricielle en entrée mais unitaire en sortie (une seule cellule après validation). Pour la recopier vers le bas :
  • il suffit de positionner la souris dans le coin inférieur droit de la cellule : le curseur se transforme en croix (+), puis, il faut cliquer/glisser vers le bas tout en appuyant simultanément sur la touche Ctrl ;
  • une autre manière de faire est de copier la cellule initiale (Ctrl+C), puis de sélectionner la plage des cellules qui doivent contenir la même formule, puis de coller (Ctrl+V).
La deuxième solution se trouve en H2 :

Code : Tout sélectionner

=INDEX(ListeNoms.C$2:C$11;EQUIV(A$2:A$11&B$2:B$11;$ListeNoms.A$2:A$11&$ListeNoms.B$2:B$11;0))
C'est une formule matricielle en entrée et en sortie, la validation conduisant à remplir toutes les cellules H2:H11. C'est un peu plus rapide, mais la maintenance est plus délicate, notamment au cas où la liste se rallonge...
Mon sentiment est qu'en règle générale, la solution par colonne supplémentaire est la plus simple à mettre en oeuvre, sauf au cas où d'autres formules seraient sensibles au décalage, dans un tableau complexe déjà élaboré.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Open newbie
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 12 avr. 2018 14:21

Re: deux conditions avec recherchev

Message par Open newbie »

Bonjour yclick et Jean-Louis,

merci d'avoir pris le temps de me proposer des solutions. :super:

J'essaye de voir ce que ça peut donner dans mon tableau et vous fait un retour. (avant il faut que j'ingère et digère la proposition de Jean-Louis :marto: :D )

Pour information j'ai 198 enfants inscrits et 9 créneaux différents...

@ très vite!
windows server 2008 R2 standard / 64bit
libre office 5.4
Open newbie
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 12 avr. 2018 14:21

Re: deux conditions avec recherchev

Message par Open newbie »

Finlamement j'ai prix la version :

Code : Tout sélectionner

=INDEX($Originale.D$2:$Originale.D$198;EQUIV(C10&D10;$Originale.B$2:$Originale.B$198&$Originale.C$2:$Originale.C$198;0))
Elle est superbe cette solution, et en plus je l'ai compris et je peux la réutiliser dans d'autres projets.

Merci :bravo:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Open newbie le 04 juil. 2019 14:42, modifié 1 fois.
windows server 2008 R2 standard / 64bit
libre office 5.4
Avatar de l’utilisateur
Michel JANZEF
ManitOOu
ManitOOu
Messages : 3454
Inscription : 12 janv. 2006 10:04

Re: [Résolu] deux conditions avec recherchev

Message par Michel JANZEF »

Bonjour à tous,
Comme il s'agit ici de réaliser un publipostage, il est donc nécessaire d'avoir un fichier odb.
Pourquoi alors ne pas faire une requête dans le fichier odb et utiliser celle-ci pour le publipostage ? (je sais, on ne se trouve plus alors dans le Tableur, mais dans Base)
AOo 4.1.15 et LibO 7.6.6.3 (x64) - Windows 10 Famille 22H2 (19045.3693) 64 bits
Open newbie
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 12 avr. 2018 14:21

Re: [Résolu] deux conditions avec recherchev

Message par Open newbie »

Michel JANZEF a écrit :Bonjour à tous,
Comme il s'agit ici de réaliser un publipostage, il est donc nécessaire d'avoir un fichier odb.
Pourquoi alors ne pas faire une requête dans le fichier odb et utiliser celle-ci pour le publipostage ? (je sais, on ne se trouve plus alors dans le Tableur, mais dans Base)

Bonjour,

Merci de ta participation, mais deux choses:

- c'est quoi base... :mrgreen:
- mon responsable informatique m'empêche de faire un mailing postage car "cette fonctionnalité présentant un risque de sécurité important" (Dans le texte) ! Je ne sais pas d'où il sort ça, mais bon, cela m'a coincé!

Du coup j'ai du procéder autrement et la formule Jean-Louis Cadeillan m'a particulièrement aidé!
windows server 2008 R2 standard / 64bit
libre office 5.4
Avatar de l’utilisateur
Michel JANZEF
ManitOOu
ManitOOu
Messages : 3454
Inscription : 12 janv. 2006 10:04

Re: [Résolu] deux conditions avec recherchev

Message par Michel JANZEF »

Bonsoir,
Open newbie a écrit :... c'est quoi base...
Le lien avec la source de données (votre classeur Calc) et la lettre type (votre fichier Writer) se fait par l’intermédiaire du module Base.
Je vous conseille de lire le tutoriel Publipostage avec Calc
user.services.openoffice.org/fr/forum/download/file.php?id=38525
AOo 4.1.15 et LibO 7.6.6.3 (x64) - Windows 10 Famille 22H2 (19045.3693) 64 bits
Open newbie
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 12 avr. 2018 14:21

Re: [Résolu] deux conditions avec recherchev

Message par Open newbie »

Je vais regarder ça.
Ce que je voulais faire au départ c'est un mailing personnalisé en publipostage.
Je sais faire le publipostage avec Calc et Writer, mais je voulais qu'il parte par mail et non en impression papier, ou en pj a mettre à chaque mail (il y en avait de 198 mails).
windows server 2008 R2 standard / 64bit
libre office 5.4