formateur informatique

Extraire les images d'une recherche par calculs Excel

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Extraire les images d'une recherche par calculs Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux, voici son url absolue :

Pour l'intégrer sur votre site internet ou blog, vous pouvez l'embarquer :

Sujets et formations similaires :


Extraire les images d'une recherche par formule

Dans la formation précédente, nous avions réalisé l'importation des données issues d'une exportation CSV produite en VBA Access. Et nous avions réussi à restituer l'affichage des liens images désignés, tout en attachant ces dernières aux enregistrements correspondants, dans leurs cellules respectives. Ici, nous devons exploiter ces résultats pour permettre la recherche sur ces données. Mais cette fois, l'extraction doit non seulement restituer les textes des enregistrements, mais aussi les images attachées. L'objectif est donc d'apprendre à manipuler les éléments multimédias, par les formules Excel.

Extraction images de recherche par formules Excel sans code VBA



La capture ci-dessus illustre le résultat d'une recherche depuis l'application Excel finalisée. Les données importées sont issues d'une base référençant des idées de sorties catégorisées par activité, département et ville. Et comme vous le constatez, sur la recherche de l'activité par un terme saisi, les enregistrements correspondants sont extraits avec les images.

Sources et présentation de la problématique
Pour manipuler ces données et notamment les photos, nous devons exploiter les travaux réalisés lors de la formation précédente en VBA Excel. Ce classeur est constitué d'une feuille nommée Importation ainsi que d'une feuille nommée Extraction. Dans la feuille importation, vous notez la présence de tous les enregistrements importés par le code VBA Excel, jusqu'à la ligne 273. Chacun d'entre eux est agrémenté d'une photo dans la colonne H de la miniature.

L'objectif consiste donc à importer les enregistrements correspondant aux termes de recherche avec leurs photos, depuis la feuille Extraction. Et le défi consiste à ne pas exploiter le code VBA Excel. Les formules vont nous permettre de manipuler les éléments multimédias.

L'une des clés réside dans les propriétés des images, telles qu'elles ont été réglées. Chacune des miniatures importées, est insérée et attachée à sa cellule. De fait, une formule, en désignant une cellule de la colonne H, pointera bien sur l'image qui lui est liée. Nous proposons de constater ce paramétrage.
  • Cliquer avec le bouton droit de la souris sur l'une des images de la feuille Importation,
  • Dans le menu contextuel, choisir Format de l'image,
  • Dans le volet qui apparaît, cliquer sur l'icône de menu Taille et propriétés,
  • Puis déployer l'affichage de la rubrique Propriétés,
Propriétés image importée liée à sa cellule Excel

Comme vous le constatez, la case Déplacer et dimensionner avec les cellules est cochée. Chaque image est donc directement liée à la cellule dans laquelle elle est insérée.

Ensuite, vous notez la présence d'une colonne I vierge d'entête Adresse. Elle doit servir à reconstruire et inscrire les références des cellules dans lesquelles sont insérées les images. Les calculs d'extraction l'utiliseront pour pointer indirectement sur l'image à importer. Dans la colonne J, d'entête Référence, le calcul est déjà posé. Il consiste à assembler un fragment de chaque champ, pour l'enregistrement en cours. Cette consolidation facilitera la recherche des termes tapés, pour ne pas avoir à comparer la saisie avec chaque colonne. Nous l'avions mis en oeuvre dans la formation pour réaliser des extractions sur des recherches textuelles. Enfin, la colonne K, d'entête Repère, est précieuse. Elle doit servir de calcul intermédiaire pour les formules de recherche. Nous avons déjà utilisé cette technique à de nombreuses reprises, dans les formations permettant d'extraire tous les enregistrements correspondant à des critères. Il s'agit de repérer chaque ligne concordante à l'aide d'un numéro incrémenté. La recherche consistera alors à trouver ces numéros dans l'ordre où ils apparaissent, afin de restituer les enregistrements pointés.
  • Cliquer sur l'onglet Extraction en bas de la fenêtre Excel pour activer sa feuille,
La cellule C4 fusionnée fait office de zone de recherche. A validation, les enregistrements correspondants, issus de la feuille Importation, doivent apparaître dans la zone d'extraction. Cette zone d'extraction débute à partir de la ligne 7 et s'étend de la colonne B à la colonne G. Comme vous le remarquez, dans cette dernière colonne, des objets images sont en place. Ils sont prévus et nécessaires pour réceptionner les miniatures d'images correspondant aux enregistrements extraits.

Une limitation surgit donc. L'extraction ne peut se faire sur un nombre variable de données, à moins d'avoir prévu une quantité suffisamment importante d'objets image. Dans cette partie dédiée à l'extraction de données multimédias par les calculs, nous nous limitons à une extraction sur 6 lignes. Le résultat sera déjà fort convaincant pour des exploitations souples et puissantes.

Nous pallierons ce souci avec le code VBA Excel dans une prochaine étape. Nous bâtirons un véritable moteur capable de restituer tous les enregistrements d'une recherche et donc, toutes les images associées. Dans le même temps, nous ferons en sorte que les caractères latins ne posent pas de problème dans la comparaison.

Reconstruire les références d'une cellule avec Image
Dans un premier temps, il s'agit d'identifier la référence de la cellule portant l'image pour chaque enregistrement. Ce calcul doit être construit dans la colonne I de la feuille Importation. C'est la fonction Excel Adresse selon un indice de ligne et un indice de colonne, qui permet de restituer cette information. Comme ce résultat est destiné à être exploité pour l'extraction depuis une autre feuille, il est nécessaire de le préfixer du nom de la feuilleen cours.
  • Cliquer sur l'onglet Importation en bas de la fenêtre Excel pour activer sa feuille,
  • Sélectionner la première cellule du calcul dans la colonne I, soit la cellule I3,
  • Taper le symbole = pour débuter la formule,
  • Entre guillemets, saisir le nom de la feuille en cours suivi d'un point d'exclamation, soit 'Importation!',
  • Taper le symbole de concaténation (&),
  • Saisir la fonction pour reconstruire les références d'une cellule suivie d'une parenthèse, soit : Adresse(,
  • Saisir la fonction donnant l'indice de ligne d'une cellule suivie d'une parenthèse, soit : Ligne(,
  • Désigner la cellule de la première image, soit H3,
  • Fermer la parenthèse de la fonction Ligne,
  • Taper un point-virgule (;) pour passer dans l'argument de l'indice de colonne,
  • Saisir la fonction retournant l'indice de colonne d'une cellule suivie d'une parenthèse, soit Colonne(,
  • Désigner de nouveau la cellule de la première image, soit H3,
  • Fermer la parenthèse de la fonction Colonne,
  • Puis, fermer la parenthèse de la fonction Adresse qui l'englobe,
  • Valider la formule par le raccourci clavier CTRL + Entrée pour conserver la cellule active,
  • Double cliquer sur la poignée de la cellule pour répliquer le calcul sur la hauteur du tableau,
Reconstruire références cellule portant une image pour calculs Excel

Les références de chacune des cellules affichant une image apparaissent en effet inscrites en texte, dans chaque cellule correspondant à l'enregistrement. Pour les calculs d'extraction à venir, nous serons donc en mesure de désigner l'image de l'enregistrement concordant, par la référence de sa cellule. En revanche, il est important de comprendre que ce résultat restitué est un texte. Nous devrons donc exploiter la fonction Excel Indirect. Elle permettra de retourner indirectement les références exploitables, correspondant au texte inscrit.

La formule Excel que nous avons construite est la suivante :

='Importation!' & ADRESSE(LIGNE(H3);COLONNE(H3))

Repérer tous les enregistrements correspondant à une recherche
Avant d'exploiter le résultat précédent, nous devons bâtir le calcul capable d'identifier chaque ligne de la feuille Importation, répondant au terme de recherche tapé dans la feuille Extraction. Ce repérage consiste à inscrire un numéro incrémenté en regard de chaque enregistrement concordant. La formule doit être bâtie en colonne K. Un double critère doit être validé. Tout d'abord, la cellule C4 de la zone de recherche ne doit pas être vide. Si un terme est effectivement tapé, il doit être trouvé dans la cellule où sont concaténés tous les mots clés identifiant un enregistrement. Il s'agit des cellules de la colonne J. Comme nous l'avait appris la formation Excel pour le traitement des chaînes de texte, c'est la fonction Cherche qui indique si une occurrence est trouvée. Pour vérifier un critère, nous devons donc exploiter la fonction Excel conditionnelle Si. Et comme plusieurs conditions sont à remplir, nous devons exploiter la fonction Excel ET, pour les énumérer. Le tout doit être englobé dans la fonction SiErreur pour conserver les cellules vierges en cas de problème de calcul.
  • Sélectionner la première cellule du calcul dans la colonne K, soit K3,
  • Taper le symbole = pour débuter le calcul,
  • Saisir la fonction de gestion d'erreur suivie d'une parenthèse, soit SiErreur(,
  • Taper la fonction conditionnelle suivie d'une parenthèse, soit Si(,
  • Saisir la fonction pour énumérer les critères, suivie d'une parenthèse, soit Et(,
  • Taper la fonction donnant la position d'un terme cherché, suivie d'une parenthèse, soit Cherche(,
  • Cliquer sur l'onglet Extraction en bas de la feuille Excel pour activer sa feuille,
  • Cliquer sur la cellule C4 de la zone de recherche pour la désigner,
  • Enfoncer la touche F4 du clavier pour la figer dans le calcul, ce qui donne : Extraction!$C$4,
  • Taper un point-virgule (;) pour passer dans l'argument de la zone de recherche,
  • Cliquer sur l'onglet Importation en bas de la fenêtre Excel pour revenir sur sa feuille,
  • Sélectionner la première cellule des termes concaténés, soit J3,
  • Fermer la parenthèse de la fonction Cherche,
  • Taper le symbole supérieur suivi du chiffre zéro, soit : >0, pour exprimer le critère à vérifier,
En effet, la fonction Excel Cherche indique la position à laquelle le terme de recherche a été trouvé, dans la chaîne passée en deuxième argument. Si la valeur 0 est retournée, cela signifie que la recherche est infructueuse.
  • Taper un point-virgule (;) pour énumérer un nouveau critère dans la fonction Et
  • Cliquer sur l'onglet Extraction en bas de la fenêtre Excel pour activer sa feuille,
  • Sélectionner de nouveau la cellule C4 et la figer, ce qui donne : Extraction!$C$4,
  • Taper les symboles inférieur et supérieur suivis de deux guillemets, soit <>'',
Ce critère signifie : Différent de vide. Il s'agit en effet de nous assurer que des termes de recherche ont bien été tapés. Le cas échéant, il est inutile de lancer le calcul.
  • Fermer la parenthèse de la fonction ET,
  • Taper un point-virgule (;) pour passer dans la branche Alors de la fonction Si,
  • Saisir la fonction retournant le plus grand nombre d'une plage, suivie d'une parenthèse, soit Max(,
  • Cliquer sur l'onglet Importation en bas de la fenêtre Excel pour revenir sur sa feuille,
  • Sélectionner la cellule K2, soit l'entête de la colonne en cours,
  • Taper le symbole deux points (:) pour générer la plage K2:K2,
  • Figer uniquement la première des deux références, ce qui donne : $K$2:K2,
Ainsi, la plage pour trouver le plus grand nombre progressera en hauteur, en même temps que le calcul est répliqué sur les lignes du dessous. De fait, un nouveau numéro supérieur au précédent sera trouvé au fur et à mesure de la progression. Pour ce faire, il reste à l'incrémenter.
  • Fermer la parenthèse de la fonction Max,
  • Ajouter une unité pour l'incrémentation, soit +1,
  • Taper un point-virgule (;) pour passer dans la branche Sinon de la fonction Si,
  • Saisir deux guillemets, soit : '', pour garder la cellule vide lorsque la combinaison de critères n'est pas satisfaite,
  • Fermer la parenthèse de la fonction Si,
  • Taper un point-virgule (;) pour passer dans la gestion d'erreur de la fonction SiErreur,
  • Saisir de nouveaux deux guillemets ('') pour conserver la cellule vide en cas de souci,
  • Fermer la parenthèse de la fonction SiErreur et valider la formule par CTRL + Entrée,
  • Double cliquer sur la poignée du calcul pour le répliquer sur la hauteur du tableau,
Pour vérifier le bon fonctionnement de notre calcul, nous devons taper un terme de recherche dans la cellule dédiée de la feuille Extraction.
  • Cliquer sur l'onglet Extraction en bas de la fenêtre Excel pour activer sa feuille,
  • En C4, saisir le terme Restaurant par exemple,
  • Cliquer sur l'onglet Importation pour revenir sur sa feuille,
Marquer les enregistrements correspondants avec chiffres incrémentés pour calculs Excel extraction

Comme vous le remarquez, chaque enregistrement pour lesquels le terme cherché est trouvé dans la cellule d'assemblage des mots clés, est repéré par un numéro incrémenté. Ce repérage est directement exploitable pour les calculs d'extraction, afin d'importer toutes les données en corrélation avec la recherche.

La formule Excel que nous avons créée est la suivante :

=SIERREUR(SI(ET(CHERCHE(Extraction!$C$4;J3)>0; Extraction!$C$4<>''); MAX($K$2:K2)+1; ''); '')

Comme vous le constatez, nous avons pris soin de supprimer le préfixe de la feuille Importation, imposé par Excel à chaque changement d'onglet. Il n'est en effet pas nécessaire de rappeler l'origine de la feuille lorsque le calcul lui appartient. Ainsi, nous simplifions la syntaxe.



Extraire les données d'une recherche textuelle
Les calculs que nous devons bâtir désormais consistent à récupérer les informations de champ, pour les inscrire dans les colonnes dédiées de la feuille Extraction. Bien entendu, seules les données correspondant au terme de recherche et repérées par les numéros incrémentés, doivent être rapatriées. Ces informations se situent dans les différentes colonnes de la base de données de la feuille Importation. Pour ne pas avoir à la sélectionner intégralement et pour simplifier la syntaxe de la formule, nous proposons de lui attribuer un nom de plage.
  • Sur la feuille Importation, sélectionner la plage de cellules B3:J273,
Nous englobons ainsi toutes les données importées. Une technique précise et confortable consiste à sélectionner la cellule B3, puis après avoir navigué vers le bas, à cliquer sur la cellule J273 en maintenant la touche Maj (Shift) enfoncée.
  • Dans la zone Nom en haut à gauche de la fenêtre Excel, taper le texte bd,
  • Puis, valider la saisie à l'aide de la touche Entrée du clavier,
Nommer plage de cellules Excel pour simplifier syntaxe de formule extraction

Notre base de données source est désormais reconnue sous ce nom par Excel. Néanmoins il fait référence à une plage de cellules aux bornes fixes. Même si ce n'est pas nécessaire pour la mise en oeuvre de cette formation, il peut s'avérer fort utile de la rendre dynamique. L'objectif est de déplacer les bornes de la plage de cellules en fonction des actualisations et mises à jour de données. Ainsi, l'utilisation du nom bd dans un calcul, permettra à ce dernier de considérer les potentielles nouvelles données.

C'est la fonction Excel Decaler combinée à la fonction NbVal qui permet de déplacer les bornes d'une plage de cellules, pour la rendre dynamique. Si vous souhaitez les mettre en oeuvre, vous devez :
  • Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
  • Cliquer sur le bouton Gestionnaire de noms dans la section Noms définis du ruban,
  • Dans la boîte de dialogue, sélectionner le nom bd,
  • Dans la zone Référence à, remplacer le calcul par le suivant :
=DECALER(Importation!$B$3:$J$3; 0; 0; NBVAL(Importation!$B:$B)-1)
  • Cliquer sur la coche verte pour le vérifier et le valider,
  • Cliquer sur le bouton Fermer pour revenir sur la feuille Excel,
Formule dans nom pour décaler automatiquement les bornes de la plage de cellules

En premier argument de la fonction Decaler, nous spécifions la première ligne de la base de données. Nous lui indiquons ainsi le point de départ de la plage de cellules.

Les deux arguments suivants sont initialisés à zéro. Il s'agit en effet d'indiquer qu'il n'y a aucun décalage, ni en ligne, ni en colonne, par rapport à ce point de départ, qui est une ligne figée.

Et précisément, en quatrième argument, nous spécifions la hauteur variable du tableau. L'objectif est de déplacer sa borne inférieure au gré des nouvelles données ajoutées. C'est la fonction Excel NbVal qui renseigne sur le nombre d'éléments contenus dans la colonne B par exemple. Ce nombre d'éléments définit le nombre de cellules et donc la hauteur de la base de données. Nous lui retranchons une unité pour extraire le titre de la colonne.

Extraire les données d'une recherche textuelle
Il s'agit désormais d'exploiter l'imbrication des fonctions Index et Equiv pour restituer les informations des enregistrements coïncidant avec le terme de recherche, tapé par l'utilisateur. La fonction Index permet de retourner un élément de base de données, situé au croisement d'une ligne et d'une colonne :

=Index(Bqse_de_données ; Indice_de_ligne ; Indice_de_colonne)

L'indice de colonne est connu, il est donc fixe. Il dépend de l'élément choisi à retourner : Le nom, l'activité, le département, la ville ou la description. L'indice de ligne est variable en revanche. Il dépend de la position des numéros incrémentés qui servent à repérer les enregistrements concordants. C'est la fonction Equiv qui renseigne sur l'indice de ligne d'un élément cherché :

=Equiv(Valeur_cherchée ; Colonne_de_recherche ; Correspondance)

Le dernier argument : Correspondance, doit être réglé à Zéro pour réaliser une recherche textuelle stricte. La valeur cherchée est le numéro incrémenté. Nous proposons donc d'exploiter de nouveau la fonction Excel Ligne, en références relatives, de manière à trouver tous les repères numérotés au fur et à mesure de la réplication du calcul. La formation Excel sur l'extraction de tous les enregistrements d'une référence, met précisément en oeuvre ces techniques.
  • Cliquer sur l'onglet Extraction en bas de la fenêtre Excel pour activer sa feuille,
  • Sélectionner la cellule B7 pour commencer l'extraction du nom correspondant à la recherche,
  • Taper le symbole = pour débuter le calcul,
  • Saisir la fonction de gestion d'erreur suivie d'une parenthèse, soit SiErreur(,
  • Saisir la fonction d'extraction de données suivie d'une parenthèse, soit Index(,
  • Taper le nom de la plage de cellules de recherche, soit bd,
  • Taper un point-virgule (;) pour passer dans l'argument de l'indice de ligne,
  • Saisir la fonction retournant la ligne d'une donnée cherchée suivie d'une parenthèse, soit Equiv(,
  • Saisir la fonction retournant l'indice de ligne d'une cellule, suivie d'une parenthèse, soit Ligne(,
  • Sélectionner une cellule de la première ligne, par exemple A1,
  • Fermer la parenthèse de la fonction Ligne,
  • Taper un point-virgule (;) pour passer dans l'argument de la colonne de recherche,
  • Cliquer sur l'onglet Importation en bas de la fenêtre Excel pour activer sa feuille,
  • Désigner l'intégralité de la colonne K en cliquant sur son étiquette, ce qui donne : Importation!K:K,
  • Taper un point-virgule (;) suivi du chiffre 0, soit : ;0, pour réaliser une recherche selon une correspondance exacte,
  • Fermer la parenthèse de la fonction Equiv,
  • Retrancher deux unités, soit -2,
En effet, les données commencent à partir de la ligne 3. Or nous avons désigné la colonne K intégrale pour un calcul dynamique, en cas de nouvelles informations. Les deux premières lignes ne doivent donc pas être considérées.
  • Taper un point-virgule (;) pour passer dans l'argument de la colonne de la fonction Index,
  • Saisir le chiffre 2 et fermer la parenthèse de la fonction Index,
En effet, le champ Nom à restituer se situe en deuxième colonne par rapport à la sélection de la base de données, définie par son nom.
  • Taper un point-virgule (;) pour passer dans la gestion d'erreur de la fonction SiErreur,
  • Saisir deux guillemets ('') pour garder la cellule vide si la recherche est infructueuse,
  • Fermer la parenthèse de la fonction SiErreur et valider le calcul par CTRL + Entrée,
Extraire les données de recherche dans un tableau par formules Excel

Nous obtenons bien le nom du premier enregistrement correspondant au texte de recherche. Il a été repéré par son numéro incrémenté, grâce à la fonction Equiv. Celle-ci ayant retourné l'indice de ligne à la fonction Index, il n'y avait plus qu'à préciser le numéro de colonne pour restituer la donnée à l'intersection.

La formule Excel d'extraction que nous avons bâtie est la suivante :

=SIERREUR(INDEX(bd;EQUIV(LIGNE(A1); Importation!K:K;0)-2; 2); '')

Pour les autres champs jusqu'à la description, le principe est exactement le même. Il suffit simplement d'adapter le numéro de colonne dans la fonction Index, afin de retourner l'information demandée.
  • En C7, adapter le calcul comme suit, pour l'activité :
=SIERREUR(INDEX(bd;EQUIV(LIGNE(A1); Importation!K:K;0)-2; 3);'')
  • En D7, adapter le calcul pour le département :
=SIERREUR(INDEX(bd;EQUIV(LIGNE(A1); Importation!K:K;0)-2; 4);'')
  • En E7, adapter la formule d'extraction pour retourner la ville :
=SIERREUR(INDEX(bd;EQUIV(LIGNE(A1); Importation!K:K;0)-2; 5);'')
  • Enfin en F7, adapter l'indice de colonne pour extraire la description :
=SIERREUR(INDEX(bd;EQUIV(LIGNE(A1); Importation!K:K;0)-2; 6);'')
  • Sélectionner ensuite la plage de cellules B7:F7,
  • Puis, tirer la poignée de la sélection jusqu'à la ligne 12,
Nous répliquons ainsi la logique d'extraction sur la zone prévue à cet effet. Comme la fonction Ligne retourne l'indice d'une cellule nom figée, cette valeur progresse en même temps que le calcul est répliqué. De fait, la fonction Equiv adapte sa recherche sur le numéro suivant. Nous obtenons donc la suite des enregistrements répondant à la demande formulée par l'utilisateur.

Importation résultats de recherche par calculs Excel



Extraire les images d'une recherche
Les photos correspondant à une recherche peuvent être extraites selon plusieurs conditions :
  • Toutes les références du calcul d'extraction doivent être figées,
  • Cette formule doit être associée à un nom de plage à rattacher à l'image,
  • L'emploi de la fonction Indirect est nécessaire pour transcrire les références textuelles en références de cellules,
Comme les références doivent être figées et rattachées à un nom, nous ne pouvons répliquer la logique de calcul pour les autres images. Un nouveau nom avec une formule adaptée doit à chaque fois être conçu. C'est la raison pour laquelle nous avons prévu une extraction sur seulement 6 lignes. C'est la petite limitation de cette application que nous corrigerons grâce à VBA Excel.

Pour désigner l'image par le calcul, nous devons extraire l'information des références de cellules situées en colonne I (Adresse) de la feuille Importation. Le principe est le même. Cette extraction doit être produite grâce à l'imbrication des fonctions Index et Equiv. La colonne I étant la huitième colonne de la base de données, le calcul adapté est donc le suivant :

=SIERREUR(INDEX(bd;EQUIV(LIGNE($A$1); Importation!$K:$K;0)-2;8);'')

Vous notez que la cellule A1 et la colonne K sont figées. Si tel n'est pas le cas, l'extraction dynamique des éléments multimédias ne fonctionne pas. L'indice de colonne est adapté pour retourner l'information sur la référence de la cellule contenant l'image. Mais cette référence sera retournée sous forme de texte, donc non utilisable. Pour l'exploiter, nous devons intégrer cette formule dans la fonction Excel Indirect. Comme son nom l'indique, cette fonction réceptionne l'information textuelle et tente de la transcrire indirectement en référence de cellule.

Le calcul devient donc le suivant :

=INDIRECT(SIERREUR(INDEX(bd;EQUIV(LIGNE($A$1); Importation!$K:$K;0)-2;8);''))

  • Copier cette formule (CTRL + C),
  • Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
  • Dans la section Noms définis, cliquer sur le bouton Gestionnaire de noms,
  • Dans la boîte de dialogue qui suit, cliquer sur le bouton Nouveau,
  • Dans la nouvelle boîte de dialogue, saisir le nom : imgA,
  • Dans la zone : Fait référence à, supprimer l'information existante,
  • A la place, coller la formule (CTRL + V) précédemment copiée,
  • Puis, cliquer sur Ok pour revenir dans la boîte de dialogue du Gestionnaire de noms,
  • Cliquer alors sur le bouton Fermer,
  • Puis, sélectionner la première image de la zone d'extraction située en G7,
  • Dans la barre de formule, taper l'équivalence avec le nom, soit : = imgA,
  • Puis, valider par la touche Entrée,
Relier image Excel à un nom par formules pour extraction photo par calcul

Instantanément la miniature de l'objet image s'adapte pour présenter la première photo correspondant au texte de recherche, et donc à l'enregistrement sur la même ligne. Comme l'illustre la capture ci-dessus, au moment de coller la formule, Excel a préfixé la cellule A1 du nom de la feuille, dans la fonction Ligne. Vous l'avez compris, l'extraction de photos par les calculs Excel est possible dans la mesure où toutes les références sont explicitement définies et figées.

La procédure doit être répliquée pour les autres images, tout en adaptant la cellule de la fonction Ligne. En effet, la deuxième image doit correspondre au deuxième enregistrement restitué. Il s'agit donc de rechercher le numéro 2, dans la colonne K de la feuille Importation.

De fait, il suffit de :
  • Créer le nouveau nom : imgB,
  • Lui associer la formule adaptée :
=INDIRECT(SIERREUR(INDEX(bd; EQUIV(LIGNE($A$2); Importation!$K:$K;0)-2;8);''))
  • Réaliser le lien avec l'objet image : =imgB,
Une fois toutes les formules adaptées et encapsulées dans leurs noms respectifs, jusqu'à imgF, et une fois tous ces noms attachés aux images, nous obtenons bien une extraction dynamique des données multimédias, selon le terme de recherche tapé.
  • Dans la zone de recherche en C4, taper le terme : Discotheque sans accents,
  • Puis, valider la saisie par Entrée,
Les enregistrements des six premières discothèques sont parfaitement extraits avec leurs images associées.
  • En C4 toujours, taper cette fois le terme : Village,
Extraction images de recherche avec défaut de mémoire, résultats non correspondants

Un seul enregistrement correspond. Il est d'ailleurs parfaitement importé avec sa photo. Mais comme vous le constatez, les autres images associées à des résultats vides, ne sont pas réinitialisées. Elles conservent en mémoire les images de la précédente recherche. L'extraction produite par les fonctions Index et Equiv étant infructueuse, le calcul retourne une erreur non gérée par notre formule.

La solution consiste à imbriquer les calculs précédents dans la fonction Excel SiErreur. En cas d'exception, nous devons retourner l'information suivante : 'Importation!$M$3'. Si vous activez la feuille Importation, vous constatez en effet la présence d'une image vierge en cellule M3. Nous l'avions inséré enconnaissance de cause.
  • Modifier la formule du nom imgA comme suit :
=INDIRECT(SIERREUR(INDEX(bd; EQUIV(LIGNE($A$1); Importation!$K:$K;0)-2;8); 'Importation!$M$3'))

Si vous adaptez tous les noms précédemment construits, à validation finale, vous constatez, pour le terme de recherche Village, que seule une photo est restituée désormais.
  • En cellule C4 de la feuille Extraction, taper le terme : Discothèque, avec l'accent cette fois,
Plus aucun résultat n'est produit. Notre recherche est sensible aux caractères latins. Pour Excel, les expressions ne correspondent pas car elle est référencée sans accents dans la base de données. C'est un problème que nous proposons de pallier dans la formation suivante. Elle consistera à créer une fonction supprimant les accents pour réaliser des recherches insensibles aux caractères latins.
  • Toujours en cellule C4, taper l'expression : Restaurant Valence,
Encore une fois, aucune extraction n'est produite. Pourtant les deux termes sont bien assemblés dans la cellule de recherche de la colonne J de la feuille Importation. Ils le sont en effet, mais pas à la suite. Notre fonction Cherche retourne la valeur 0, puisque l'assemblage demandé n'est pas trouvé en l'état. C'est aussi une solution que nous souhaitons apporter dans une prochaine formation, pour permettre de saisir autant de mots clés de recherche que souhaité, comme dans un vrai moteur de recherche. Et nous en profiterons pour mettre en application les travaux précédents sur les caractères latins.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



Partager la formation
Partager sur Facebook
Partager sur Google+
Partager sur Twitter
Partager sur LinkedIn