XL 2016 Problème de recherche et d'import vba

LLB29

XLDnaute Nouveau
Bonjour,

Je viens solliciter l'aide du forum car j'ai atteint mes limites sur la résolution de ce problème...
Suite à des recherches sur divers forum, j'ai mis en application ce code vba.
L'objectif est d'aller chercher des valeurs dans une colonne d'une base donnée. Si elles sont trouvées, on copie la ligne entière et on la colle dans le fichier Import (où se trouve le code). Si elles ne sont pas trouvées, un message d'erreur apparaît. J'ai pour l'instant deux soucis:
1) Après avoir déclaré les variables, je souhaitais pouvoir créer un tableau des valeurs à rechercher. J'aurai souhaité faire plus simple et plus dynamique en indiquant par exemple Sheets("Paramètres").Range("A3:A28"). Mais j'ai une erreur de type 13 qui apparaît. Pour l'instant je n'ai réussi à faire fonctionner ce code qu'en indiquant précisément ce qu'il y a dans T...
2) Malgré cette définition de T un peu lourde, l'import se fait, mais il ne prend pas en compte le fait que chaque valeur peut être présente plusieurs fois dans la base de donnée et n'importe que la première ligne de la première valeur trouvée...
Savez-vous s'il existe une formule qui permettrait de simplifier la définition des valeurs de recherches dans T?
Connaissez-vous une modification possible du code qui permettrait d'importer autant de lignes que de valeurs de recherches présentes dans la base de données ?
Ci-joint le fichier import où se situe le code et un exemple de fichier base de données

D'avance merci pour votre aide.
 

Pièces jointes

  • Fichier Base Données.xlsx
    11.5 KB · Affichages: 4
  • Fichier Import.xlsm
    28.6 KB · Affichages: 1

chris

XLDnaute Barbatruc
Bonjour

Pas sûr de comprendre.

S'il manque une lettre tu n'importes rien ?

L'import peut se faire très simplement avec une requête PowerQuery intégré à Excel : on récupère toutes les lignes existantes
  • soit en ne mentionnant pas les lignes absentes (s'il manque F, la restitution passe de E à G)
  • soit en les affichant sans infos autres que la lettre
La structure de ta colonne paramètres avec 15 colonnes fusionnées, interpelle...
 

LLB29

XLDnaute Nouveau
Bonjour,
Oui, si la valeur recherchée n'est pas trouvée dans la base de donnée, il n'y aura aucune ligne d'importée.
Si possible, je souhaiterais rester sur vba car je ne sais pas utiliser PowerQuery.
En ce qui concerne la structure de l'onglet "Paramètres", oui on peut défusionner les colonnes, je ne m'en étais pas aperçu, le code tourne quand même...
Merci
 

chris

XLDnaute Barbatruc
RE

Ta réponse reste ambigüe : c'est tout ou rien ou bien les lignes trouvées ?

Ci-joint les 2 solutions PowerQuery proposées dans mon post précédent

La bouton VBA permet de choisir le fichier et d'inscrire sont nom dans la cellule nommée de couleur jaune utilisée par les requêtes

Si on garde la 1ère solution, l'onglet Paramètres peut être supprimé ainsi que la requête du même nom
 

Pièces jointes

  • Fichier Import_PQ.xlsm
    41.2 KB · Affichages: 3

LLB29

XLDnaute Nouveau
Bonsoir,
Si la valeur recherchée de l'onglet "Paramètres" du fichier Import n'est pas trouvée dans dans la colonne "Élément" du fichier base de donnée, il n'y aura aucune ligne d'importée dans l'onglet import du fichier import. Merci pour le fichier. Si possible, je souhaiterais rester sur une autre solution que PowerQuery.
Merci
 

chris

XLDnaute Barbatruc
RE

Toujours pas clair
Si la valeur recherchée de l'onglet "Paramètres" du fichier Import n'est pas trouvée dans dans la colonne "Élément" du fichier base de donnée, il n'y aura aucune ligne d'importée dans l'onglet import du fichier import.
On ne sait toujours pas si une lettre manquante suffit à n'importer aucun résultat du tout

Dans la mesure où la simplicité et l’efficacité de PowerQuery ne t'intéresse pas je passe la main.
Tu ne connais pas PowerQuery mais pas tellement VBA non plus...
Bonne continuation
 

LLB29

XLDnaute Nouveau
Bonjour,
Je reprends et corrige donc mon post précédent: "Si une ou plusieurs des valeurs recherchées de l'onglet "Paramètres" du fichier Import n'est/ne sont pas trouvée/s dans dans la colonne "Élément" du fichier base de donnée, la ligne ou les lignes correspondantes à cette ou ces valeurs recherchées manquantes ne sera ou ne seront pas importée/s dans l'onglet import du fichier import."
Effectivement je ne connais pas la simplicité et l’efficacité de PowerQuery et j'ai un niveau débutant en vba, mais j'essaie.
Merci pour ton retour et bonne continuation aussi.
 

LLB29

XLDnaute Nouveau
Bonjour,
Qu'entends-tu par "la partie utilisée de l'onglet du classeur Base de données"?
Tu veux dire, filtrer les valeurs de recherche sur le fichier base de données et importer les lignes correspondantes dans le fichier Import ?
 

LLB29

XLDnaute Nouveau
Bonsoir,
Merci pour tes dernières informations. J'ai réorienté le code en utilisant un filtre qui fait référence à une plage de cellule + copie des lignes affichées + collage sur la première ligne non vide du tableau du fichier import et ça fonctionne.
Merci pour l'astuce CurrentRange.
Bonne soirée.
 

Discussions similaires

Réponses
5
Affichages
245
Réponses
7
Affichages
635