Userform

Résolu/Fermé
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 - 9 sept. 2021 à 14:57
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 - 22 oct. 2021 à 19:21
Bonjour Le forum,
j'ai un userform avec un combobox pour alimenter les données de l'userform et les remplir dans un classeur par la suite.
je souhaiterais récupérer la liste dans un classeur fermé
j'ai essayé ce code mais il me met une erreur 13
merci pour votre retour
belle journée
Sub Nom_Freelance_Change()


Workbooks.Open "C:\Users\Sandrine\Desktop\CANDIDATS\CANDIDATS implémentés dans le Book\BOOK candidats_ Version FINALE en cours.xlsm"
ActiveWindow.WindowState = xlMinimized



Nom_Freelance.RowSource = Sheets("GLOBAL").Range("A2:A4000")

End Sub

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
9 sept. 2021 à 17:15
Bon jour,

https://answers.microsoft.com/fr-fr/msoffice/forum/all/executeexcel4macro/03971baf-a1ce-4407-bbdc-2a96ee3e7697
En utilisant la fonction:
Function LireClosedCell(Dossier As String, _
Fichier As String, Feuille As String, Adr As String)


vous arriverez a vos fin.

un exemple (salut michel_m):
Userform
Private Sub CommandButton1_Click()
    Dim Dossier As String, Fichier As String, Feuille As String, Adr As String
    
    Dossier = "E:\_Docs_Prog_Excel\_Excel_a_traiter\Excel_ferme_ado_xl4\michel_m_recup_x_fichier\"
    Fichier = "sv1.xls"
    Feuille = "Feuil1"
    
    For n = 1 To 18     'nombre de cellule a recuperer
        Adr = "B" & n    'colonne et ligne
        VC = LireClosedCell(Dossier, Fichier, Feuille, Adr)
        ComboBox1.AddItem VC
    Next n
End Sub


Module
Function LireClosedCell(Dossier As String, Fichier As String, Feuille As String, Adr As String)
    Dim R As Long, C As Long, F As String
    R = Range(Adr).Row
    C = Range(Adr).Column
    F = ("'" & Dossier & "[" & Fichier & "]" & Feuille & "'!R" & R & "C" & C)
    LireClosedCell = ExecuteExcel4Macro(F)
End Function


Par contre 3999 items dans une combobox, ca pique les yeux
1
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
18 sept. 2021 à 08:21
Bonjour f894009
alors j'ai essayé ton code en modifiant pour mon fichier.
il m'ouvre le chemin et je dois sélectionner le fichier correspondant ... je pensais qu'il ne l'ouvrait pas ;(
après il me met une erreur d'exécution '-2147352571(800200005)
et surligne mon texte titre de combobox .additemvc
ma volonté était de retrouver le nom d'une personne dans le fichier fermé et de remplir les autres champs de mon userform..
Sub Nom_Freelance_Change()

Dim Dossier As String, Fichier As String, Feuille As String, Adr As String

Dossier = "C:\Users\Sandrine\Desktop\PERSO\SOCIETE\Suivi SJTC\Candidats"
Fichier = "Base de données Frelance.xls"
Feuille = "GLOBAL"

For n = 3 To 4000 'nombre de cellule a recuperer
Adr = "A" & n 'colonne et ligne
VC = LireClosedCell(Dossier, Fichier, Feuille, Adr)
Nom_Freelance.AddItem VC
Next n
End Sub


Merci par avance
belle journée
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023
18 sept. 2021 à 10:24
Bonjour,

Manque un "\" en fin de chemin de, votre classeur variable Dossier
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
20 sept. 2021 à 07:41
Bonjour f894009
Je vous remercie pour votre aide,
j'ai ecris cela et j'ai une erreur indice n'appartient pas a la selection .. j'avoue que je suis un peu paumé
merci et belle journée

Sub CommandButton1_Click()
Dim RechercheNom As String
Dim chemin As String
Dim Fichier As String
Dim Plage As String
Dim req_SQL As String
Dim c As Range
'Plage = Range(Cells(3, 1), Cells(3, 4000))
chemin = "C:\Users\Sandrine\Desktop\PERSO\SOCIETE\Suivi SJTC\Candidats\"
Fichier = "Base de données Freelance.xls"
RechercheNom = InputBox(" Quel est le nom recherché ?")
Dim Cn As ADODB.Connection

'Définit le classeur fermé servant de base de données

Set Cn = New ADODB.Connection

'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
With Worksheets("GLOBAL").Range("A3:A4000")
MsgBox ("okt")
Range("A3:A4000") = .Find(RechercheNom, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.Nom_Freelance.Value = RechercheNom
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If

End With
End With



Cn.Close
Set Cn = Nothing
End Sub
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
10 sept. 2021 à 08:13
Bonjour,
je vais regarder cela et vous remets un commentaire par la suite
merci encore
belle journée excelldiene
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
20 sept. 2021 à 14:20
Bonjour,

Pouvez mettre votre fichier a dispo?
Vous faites une connection ADO fichier ferme et semble-t-il vous voulez faire comme si ce fichier est ouvert excel, pas marche

un exemple de code pour classeur xls si vous souhaitez plancher un peu avant de mettre a dispo votre fichier

'Voici une macro qui permet de se connecter à un classeur afin d'extraire le contenu de la feuille nommée "Feuil1".
'VBA

Sub RequeteClasseurFerme()
    Dim cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
    
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\monClasseurBase.xls"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Feuil1"
    
    Set cn = New ADODB.Connection
    
    '--- Connection ---
    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------
    
    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
    
    Set Rst = New ADODB.Recordset
    Set Rst = cn.Execute(texte_SQL)
    
    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst
    
    '--- Fermeture connexion ---
    cn.Close
    Set cn = Nothing

End Sub




Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...

ou
www.grosfichiers.com

ou
www.transfernow.net 'fichier jusqu'a 4G
1
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
21 sept. 2021 à 07:41
bonjour
voici le lien de mon fichier personal et la base sur l'autre lien
j'ai essayé d'écrire le code mais j'ai une erreur en fin de requête
merci de votre aide
belle journée
https://www.cjoint.com/c/KIvfNwzF1Iz
https://www.cjoint.com/c/KIvfPtdS75z
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 21 sept. 2021 à 09:15
Bonjour,

Je recupere les fichier et regarde la chose

Le fichier personnal.xlsb ne fait l'affaire, impossible a ouvrir!!
Vous devez avoir un .xlsm

"Base de données Frelance.xls" nom fichier dans votre code d'origine
Base-de-données-Freelance.xlsx nom fichier mis a dispo
Lequel est le bon car la chaine de connection n'est pas la meme
1
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
21 sept. 2021 à 12:12
Les deux
Un fichier basé de données et un fichier personal ou le code est dans le module créer un contrat normalement
Merci
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023
Modifié le 21 sept. 2021 à 19:12
Re,

Fichier base ok, mais xlsb pas ok, rien.
Mettez un fichier xlsm a dispo pas de xlsb

Quel version office avez vous?

Ok, c'est bon pour xlsb. Nom fichier personaltest pas bon seulement personal

Les entetes de colonne fichier base posent un petit probleme. Doivent etre sur une seule ligne



Je reprends la chose demain
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
21 sept. 2021 à 21:31
Bonsoir f894009,
Merci pour votre aide
je suis sous
voici le fichier modèle qui est en lien avec le personal( a la base le fichier sous le nom de personal.xlsb, j'ai du le modifier pour l'enregistrer ailleurs..:( )
Pour quelle raison l'entête doit etre sur une seule ligne ?( la recherche sera nulle car cellule fusionnées ?
lien du fichier modele : https://www.cjoint.com/c/KIvtEMhj4pz
Merci et belle soirée
Titi
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023
22 sept. 2021 à 07:23
Bonjour,

je suis sous
L' abus d'acool est préjudiciable a la sante. Mais c'est vous que cela regarde.
En attendant, votre office quel version?

Pour quelle raison l'entête doit etre sur une seule ligne ?
Beaucoup plus simple pour la requête SQL de recherche
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
22 sept. 2021 à 12:29
Bonjour
Pardon j’étais sous la fatigue hier soir
Je travaille sur office 365 :)
0