Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'ai un fichier Excel à mettre à jour où des valeurs sont à rechercher avec une formule rechercheX avec une liaison avec un autre fichier. En fait quand je dois ajouter des produits avec un code article, je veux que ça me trouve la valeur par cette formule car le fichier distant est à jour régulièrement.
J'ai mis un fichier pour mieux comprendre se que je recherche.
Pourquoi ne pas utiliser une requête SQL avec ADO plutôt
Pour activer la référence ADO :
Cliquez sur Outils > Références.
Cochez Microsoft ActiveX Data Objects x.x Library (la version peut varier).
Pour utiliser ADO afin d'accéder aux données du fichier externe :
VB:
Sub RechercherReferenceSansOuvrir()
Dim cn As Object
Dim rs As Object
Dim cheminFichier As String
Dim feuille As String
Dim codeArticle As String
Dim reference As String
Dim requeteSQL As String
' Définir les variables
cheminFichier = "C:\Nomdudossier\nomdufichier.xlsx"
feuille = "Feuil1$" ' Nom de la feuille avec un $ à la fin
codeArticle = "CODE123" ' Remplacer par le code article souhaité
' Créer la connexion ADO
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & cheminFichier & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
' Définir la requête SQL pour trouver la référence correspondant au code article
requeteSQL = "SELECT ref FROM [" & feuille & "] WHERE [code article] = '" & codeArticle & "'"
' Exécuter la requête
Set rs = CreateObject("ADODB.Recordset")
rs.Open requeteSQL, cn, 1, 1
' Vérifier si des résultats ont été trouvés
If Not rs.EOF Then
reference = rs.Fields("ref").Value
Else
reference = "Non trouvé"
End If
' Afficher la référence (ou l'insérer dans une cellule de votre choix)
MsgBox "La référence pour le code article " & codeArticle & " est : " & reference
' Fermer la connexion
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Pourquoi ne pas utiliser une requête SQL avec ADO plutôt
Pour activer la référence ADO :
Cliquez sur Outils > Références.
Cochez Microsoft ActiveX Data Objects x.x Library (la version peut varier).
Pour utiliser ADO afin d'accéder aux données du fichier externe :
VB:
Sub RechercherReferenceSansOuvrir()
Dim cn As Object
Dim rs As Object
Dim cheminFichier As String
Dim feuille As String
Dim codeArticle As String
Dim reference As String
Dim requeteSQL As String
' Définir les variables
cheminFichier = "C:\Nomdudossier\nomdufichier.xlsx"
feuille = "Feuil1$" ' Nom de la feuille avec un $ à la fin
codeArticle = "CODE123" ' Remplacer par le code article souhaité
' Créer la connexion ADO
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & cheminFichier & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
' Définir la requête SQL pour trouver la référence correspondant au code article
requeteSQL = "SELECT ref FROM [" & feuille & "] WHERE [code article] = '" & codeArticle & "'"
' Exécuter la requête
Set rs = CreateObject("ADODB.Recordset")
rs.Open requeteSQL, cn, 1, 1
' Vérifier si des résultats ont été trouvés
If Not rs.EOF Then
reference = rs.Fields("ref").Value
Else
reference = "Non trouvé"
End If
' Afficher la référence (ou l'insérer dans une cellule de votre choix)
MsgBox "La référence pour le code article " & codeArticle & " est : " & reference
' Fermer la connexion
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Alors le SQL je ne connais pas du tout néanmoins ton code est bien expliqué 😉
En fait j'ai un peu caricaturé le fichier test car le code où je veux l'agrémenter est dans un userform avec plusieurs valeurs et une feuille avec pas moins de 60 colonnes et ça ne concernerait que 4 dispersé dans le tableau.
Voilà le code en question si ça peut te donner une idée : 😉
Alors le SQL je ne connais pas du tout néanmoins ton code est bien expliqué 😉
En fait j'ai un peu caricaturé le fichier test car le code où je veux l'agrémenter est dans un userform avec plusieurs valeurs et une feuille avec pas moins de 60 colonnes et ça ne concernerait que 4 dispersé dans le tableau.
Voilà le code en question si ça peut te donner une idée : 😉
en adaptant les paramètres, en particulier Sheets("Base").Range("A:A") et Sheets("Base").Range("B:B") au chemin d'accès à votre "vrai" fichier de données.
Cordialement
en adaptant les paramètres, en particulier Sheets("Base").Range("A:A") et Sheets("Base").Range("B:B") au chemin d'accès à votre "vrai" fichier de données.
Cordialement
Ok d'accord merci pour votre retour par contre est-ce que si les valeurs dans le fichier distant qui sont modifiées le seront également dans le miens ?
Ok d'accord merci pour votre retour par contre est-ce que si les valeurs dans le fichier distant qui sont modifiées le seront également dans le miens ?
Le code initial pour ajouter sur mon fichier par l'USF est sur le message #3, la seule chose que je souhaite c'est que ça me fasse comme si on ajoutait la formule RECHERCHEX dans la cellule correspondante à la TextBox sur un autre fichier distant et que ça se mette à jour l'or de l'ouverture.
Désolé pour mon dernier message car pas très explicit je l'avoue 😆
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD