C'est la même chose queCode:select champ from table1 inner join table2 on table2.champx=table1.champx
Code:select champ from table1 ,table2 where table2.champx=table1.champx
Version imprimable
C'est la même chose queCode:select champ from table1 inner join table2 on table2.champx=table1.champx
Code:select champ from table1 ,table2 where table2.champx=table1.champx
bah c'est ca ma question et Merci
Sinon si vous avez un peu de temps à mettre des commentaires sur ton code ça me ferait plaisir
et c'est la meme chose pour code vba?
Non et comme la je suis sur mon téléphone portable c'est pas pratique, demain! Pas de problème.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 Sub Test() Dim Cn As Object, Rst As Object, Sql As String, Fi1 As String, Fi2 As String,client as String,safran as String Fi2 = "C:\Users\admin\Desktop\nouveau travail\safran.xlsm" Fi1 = "C:\Users\admin\Desktop\nouveau travail\Copie de FormIDD_DERX189100_RETOUR_SES.xlsm" client = "Description_et_Decision_Techn" safran = "Feuil1" Set Cn = OpenConnetion(Fi1, False) 'ici j'ouvre une connexion adodb via une fonction If TypeName(Cn) = "Nothing" Then Exit Sub 'si la connexion ne se fait pas je quitte la sub 'la je formule ma requête frm1 et ma sous requête frm2 'il est possible d'imbriquer dz requête frm2 fait un jointure externe au deuxième fichier Excel Sql = "Select Frm1.[F5] from [" & client & "$] as Frm1 inner join (Select * from [" & safran & "$] in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' )as frm2 on frm2.[F2]=frm1.[F5]" Set Rst = OpenRecordSet(Sql, Cn) 'la j'ouvre mon recordset via une fonction If TypeName(Rst) = "Nothing" Then Exit Sub 'si erreur je quitte la sub Range("A135").CopyFromRecordset Rst Rst.Close: Cn.Close Set Rst = Nothing: Set Cn = Nothing End Sub Public Function OpenConnetion(FichierXls As String, AvecTitre As Boolean) As Object 'ouvre la connexion au fichier Excel 'FichierXls non et chemin complet du fichier 'AvecTitre précise si la première ligne de l'onglet est les entête de colonnes ou pas 'rzutourne la connexion On Error Resume Next Dim HDR If Dir(FichierXls) = "" Then MsgBox FichierXls & vbCrLf & "Pas trouvé": Exit Function ' versifie si le fichier existe HDR = Array("No", "Yes") Set OpenConnetion = CreateObject("ADODB.Connection") Instancie un objet adosb c'est mieux que d'utiliser le références With OpenConnetion .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & FichierXls & ";Extended Properties=""Excel 12.0 Xml;HDR=" & HDR(Abs(AvecTitre)) & ";IMEX=1;""" .Open If Err Then MsgBox Err.Description Set OpenConnetion = Nothing End If Err.Clear On Error GoTo 0 End With End Function Public Function OpenRecordSet(Sql, Cn As Object) As Object 'Retourne un recordset 'Retourne un RecordeSet On Error Resume Next Set OpenRecordSet = CreateObject("ADODB.Recordset") OpenRecordSet.Open Sql, Cn, 1, 3 'ouvre un recordset sur la requête SQL pour la connexion en lecteur écriture et ajou dynamique If Err Then MsgBox Err.Description Set OpenRecordSet = Nothing End If Err.Clear On Error GoTo 0 End Function
Merci Pour votre aide
quand j'ai fait
Code:Select Frm1.[F5] from [" & client & "$] as Frm1 , [" & safran & "$] in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' as frm2 where frm2.[F2]=frm1.[F5] and frm2.[F8]=frm1.[F9] and frm2.[F7]=frm1.[F8]
il m'a donné erreur dans la clauseCode:From
Tu est obligé de faire des requête imbriquer, dis toi qu'Excel n'est pas vraiment un base de données il faut composer!
Si tu travaillais sur un autre onglets du même classeur tu ferais comme tu as l'habitude.
Sql = "Select Frm1.[F5] from [" & client & "$] as Frm1, (Select * from [" & safran & "$] in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' )as frm2 Where frm2.[F2]=frm1.[F5]"Permet de faire une jointure externe een précisant le driver utiliser, ca pourrais être un fichier csv ,Accès ou autreCode:in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' )
Encore je sais pas comment faire et j'ai tous ecris dans le commentaire du code
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 sqlmin = "Select Frm2.[F9] from [" & client & "$] as Frm1 , (Select * from [" & safran & "$] in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' )as frm2 where frm2.[F2]=frm1.[F5] and frm2.[F7]=frm1.[F8] " sqlmin = "Select Frm2.[F10] from [" & client & "$] as Frm1 , (Select * from [" & safran & "$] in '" & Fi2 & "' 'excel 8.0;HDR=no;IMEX=1;' )as frm2 where frm2.[F2]=frm1.[F5] and frm2.[F7]=frm1.[F8] " Set Rst = OpenRecordSet(Sql, Cn) Set rstmin = OpenRecordSet(sqlmin, Cn) Set rstmax = OpenRecordSet(sqlmax, Cn) If TypeName(Rst) = "Nothing" Then Exit Sub Rst.Close: Cn.Close Set Rst = Nothing: Set Cn = Nothing If Sql > sqlmin And Sql < sqlmax Then 'pointer sur la cellule correspondante à sql dans la colonne [F14] et lui donner la valeur "AEE" je sais pas comment faire Else 'pointer sur la cellule correspondante à sql dans la colonne [F14] et lui donner la valeur "INC" je sais pas comment faire End If
Bonjour,
là je ne comprends pas!Citation:
Code:
1
2
3
4
5 If Sql > sqlmin And Sql < sqlmax Then 'pointer sur la cellule correspondante à sql dans la colonne [F14] et lui donner la valeur "AEE" je sais pas comment faire Else 'pointer sur la cellule correspondante à sql dans la colonne [F14] et lui donner la valeur "INC" je sais pas comment faire End If
Si tu veux modifier tes cellules via ado, il faut faire une requête de mise à jour, ado ne te donnera pas l'adresse de la cellule! Ca na plus rien à voir avec Excel mais avec une base de données.
Envoi moi deux fichier Excel en exemple en remplaçant les données confidentiel par de données bidonnées.
Dans l'éditeur click sur gérer les pièces jointes.
Et détails moi ce que tu veux faire.
Ce que je veux faire c'est avoir des valeurs relevée corrseponds à l'item par exemple 234 de fichier excel client par la requete sql
Et avoir la valeur mini accepte de la base critere de la societe par la requete sql mini
Ainsi la valeur maxi par la requete sqlmax
Apres comparer la valeur relevée avec la valeur min et max acceptée
Si elle est dans l'intervalle on écrit dans la colonne de sanction coorsependant à la valeur que cest acceptee
Sinon on ecrit rejetée