si elle est bonne!
ma table dans laquelle il y a le mail et le sigle se nomme ainsi : "HostEmail et sigles"
si elle est bonne!
ma table dans laquelle il y a le mail et le sigle se nomme ainsi : "HostEmail et sigles"
lol
oki ba il faut que tu mette des crocher alors
[HostEmail et sigles]
sinon il ne vas pa comprendre un peu comme moi
ok effectivement sété cela le pb.
J'ai fais les modifications necessaires et voici ce qu'il se passe:
Lorsque que j'execute le code j'ai un message d'access qui me dit : (cf voir doc joint)
Alors lorsque je clique sur "ok" il y a la même fenetre qui s'affiche et ainsi desuite......et la fenetre s'affiche indefiniment et lorsque je clique environ 50 fois sur "ok" je clique ensuite sur annuler et cela m'affche une erreur sur mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub executer_Click() Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field Dim sSQL As String ' Ouverture de la base de données Set db = CurrentDb sSQL = "SELECT HostEmail, Sigles FROM [HostEmail et sigles] ;" ' Ouverture du recordset Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly) While Not rst.EOF DoCmd.RunSQL "UPDATE " & oWSht.Name & " set Sigle='" & rst(1) & "' WHERE HostEmail='" & rst(0) & "'" rst.MoveNext Wend ' Fermeture du Recordset rst.Close End Sub
Seulement lorsque je regarde ma table importé IL Y A QUELQUES SIGLES QUI Y SONT!!!!Mais pas tous! Tu comprend quelques chose?
lol
ca veut dire que ton code fonction
mdr
les message que tu recoit c'est un avertissement.
il suffit juste de mettre des
et les réactivé a la fin de ton code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2docmd.setwarning false
on a fait la même chose pour l'ajout des donné hihi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2docmd.setwarning true
ouaaaaaaouuh!!!!!
Bon c'est un truc de grand malade un truc de taré franchement c'est trop bien sa marche nikel!!!!
Franchement merci totofe c'est exactement cela que je voulai puis tout fonctionne correctement alala merci beaucoup !!!!!!!!!!!!!!!!!!:
Est ce que tu crois que c'est possible dans mon code de remplacer le "& oWsht &" par un "& oWkb &" car je me rend compte qu'il y a 2 fichiers excel dont le nom de la feuille de travail diffère du titre du fichier.
Autrement il serai préferable de recuperer le nom du fichier (owkb) sans le .xls.
Est ce possible?
oui c'est possible avec la fonction leftEnvoyé par mike2302
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 left(owkb,4)
donc je mettrai dans le code
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part .... & left(oWkb, 4).Name &....
ou alors
??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 oWkb = Left(oWkb, 4) ....& oWkb.name &.....
A oui dsl ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part .... & left(oWkb.name, 4) &....
je pense que c'est plutot la fonction right car cela supprime les lettres de la fin (.xls)
est ce que tu pense que mon code est bon?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
54
55
56
57
58
59
60
61
62
63
64
65
66 Private Sub importer_Click() Dim oApp As Excel.Application Dim oWkb As Excel.Workbook Dim oWSht As Excel.Worksheet Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field Dim sSQL As String Set oApp = CreateObject("excel.application") Set oWkb = oApp.Workbooks.Open(Me.NomChamp) Set oWSht = oWkb.Worksheets(1) 'premier ligne ou on commence l'import i = 16 'pour éviter les messages lors de l'ajout des enregistrements DoCmd.SetWarnings False 'si la table existe déjà il y a un msgbox (module qui va avec) If fExistTable(right(oWkb.Name, 4)) Then MsgBox "Attention !! Cette Table a déjà été importer dans la Base de Donnée" Else DoCmd.RunSQL "CREATE TABLE " & right(oWkb.Name, 4) & "(ConfID Integer, HostEmail String, Duration Integer, Attendees Integer, Mois Integer, Année Integer, Sigle String);" 'tant que la cellule n'est pas vide While right(oWkb.Range, 4)("A" & i).Value <> "" If DCount("*", right(oWkb.Name, 4), "[HostEmail] LIKE '" & right(oWkb.Cells, 4)(i, 7) & "*'") = 0 Then cSQL = "insert into " & right(oWkb.Name, 4) & " ( [ConfID],[HostEmail],[Duration],[Attendees],[Mois],[Année]) values (" & Chr(34) & right(oWkb.Cells, 4)(i, 1) & Chr(34) & "," & Chr(34) & right(oWkb.Cells, 4)(i, 7) & Chr(34) & "," & Chr(34) & right(oWSht.Cells, 4)(i, 18) & Chr(34) & "," & Chr(34) & right(oWkb.Cells, 4)(i, 19) & Chr(34) & "," & Chr(34) & right(Right(oWkb.Name,4), 2) & Chr(34) & "," & Chr(34) & right(Left(oWkb.Name,4), 4) & Chr(34) & ")" 'exécute la requète DoCmd.RunSQL cSQL End If i = i + 1 Wend ' Ouverture de la base de données Set db = CurrentDb sSQL = "SELECT HostEmail, Sigles FROM [HostEmail et sigles] ;" ' Ouverture du recordset Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly) While Not rst.EOF DoCmd.RunSQL "UPDATE " & Right(oWkb.Name, 4) & " set Sigle='" & rst(1) & "' WHERE HostEmail='" & rst(0) & "'" rst.MoveNext Wend ' Fermeture du Recordset rst.Close End If DoCmd.SetWarnings True End Sub
J'ai l'impression que oui!Envoyé par mike2302
enfin fini lol
en fait tu avais raison c'été bien un left et je ne voudrai que les 20 premier caractere d'ou le "(Left(oWkb.Name, 20))"
j'ai fais une rectification et j'ai un problème a ce niveau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 If fExistTable(Left(oWkb.Name, 20)) Then MsgBox "Attention !! Cette Table a déjà été importer dans la Base de Donnée" Else DoCmd.RunSQL "CREATE TABLE " & Left(oWkb.Name, 20) & "(ConfID Integer, HostEmail String, Duration Integer, Attendees Integer, Mois Integer, Année Integer, Sigle String);" 'tant que la cellule n'est pas vide While Left(oWkb.Range, 20)("A" & i).Value <> "" If DCount("*", Left(oWkb.Name, 20), "[HostEmail] LIKE '" & Left(oWkb.Cells, 20)(i, 7) & "*'") = 0 Then cSQL = "insert into " & Left(oWkb.Name, 20) & " ( [ConfID],[HostEmail],[Duration],[Attendees],[Mois],[Année]) values (" & Chr(34) & Left(oWkb.Cells, 20)(i, 1) & Chr(34) & "," & Chr(34) & Left(oWkb.Cells, 20)(i, 7) & Chr(34) & "," & Chr(34) & Left(oWSht.Cells, 20)(i, 18) & Chr(34) & "," & Chr(34) & Left(oWkb.Cells, 20)(i, 19) & Chr(34) & "," & Chr(34) & Left(Right(oWkb.Name, 20), 2) & Chr(34) & "," & Chr(34) & Left(Left(oWkb.Name, 20), 4) & Chr(34) & ")" 'exécute la requète DoCmd.RunSQL cSQL End If i = i + 1 Wend ' Ouverture de la base de données Set db = CurrentDb sSQL = "SELECT HostEmail, Sigles FROM [HostEmail et sigles] ;" ' Ouverture du recordset Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly) While Not rst.EOF DoCmd.RunSQL "UPDATE " & Left(oWkb.Name, 20) & " set Sigle='" & rst(1) & "' WHERE HostEmail='" & rst(0) & "'" rst.MoveNext Wend
tu peut m'aider?
Haaa oui dsl me suis complétement trompé dans ma fonction leftEnvoyé par mike2302
en faite si tu veux avoir juste le nom du fichier sans le .xls il faut faire
et le problème dans ton code c'est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 left(owkb.name,len(owkb.name)-4)
et je voit ke tu a mis des left un peu partout. regarde bien tu a plein d'erreur tu doit mettre des left que pour le owkb.name
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 While oWkb.Range("A" & i).Value <> ""
ah ok bon de toute façcon j'ai rectifié et sa marche
tu croi qu'avec un bouton dans un nouveau formulaire je pourrai avoir un code qui me permettrai de compacter toutes les tables importeées et les mettre dans une seule et même table les unes en dessous des autres?
Puisque pour chaque stat, les champs c'est les même...
bonjours à tous se qui ont participés à cette discution,
je voudrai savoir si il est possible de ne pas mettre de parametre dans cette ligne:
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
Al
ba oui tu peut il suffi que t'importe des donné de la même manière vers la même table.Envoyé par mike2302
De quelle paramètre tu parle???bonjours à tous se qui ont participés à cette discution,
je voudrai savoir si il est possible de ne pas mettre de parametre dans cette ligne:
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
Al
en fait j'ai une feuille excel dont les entêtes de colonne correspondent à celle de ma table; lorsque j'importe les champs dans ma table, je le fais à partir d'un numero de ligne, se qui me permet de n'importer que les dernieres par exemple. Je voudrai savoir si il etait possible d'utiliser votre methode pour mon cas. (j'espère que vous avez compris).Je voudrai importer des ligne entiere de ma feuille dans une table à partir d'une ligne spécifiée ( je n'est pas de probleme avec les entête car elles sont identiques avec celle de la table.
Je voudrai savoir si je pouvais utiliser la ligne de code (voir ensien message) pour faire mon importation.
merci pour votre réponse
oui tu peux l'importer a l'aide du code précédent. il n'y a pas de problème faut juste que tu initialise i au numéro de ta ligne.
ok sa j'ai compris, c'est ce que j'ai fait d'ailleur.
mais c'est consernant cette ligne:
vu que je n'est pas de probleme avec le nom des colonne, que dois je mettre à la place de "champ1","cha......
Code : Sélectionner tout - Visualiser dans une fenêtre à part cSQL = "insert into [SAISIE] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
a la place de champ1, champ2... faut que tu mettes les noms de tes champs de ta table. si j'ai bien compri c'est les même nom que celle de tes entête de colonne excel.
oui c'est sa mais justement ya pas moyen de ne pas les mettres vu que tout corespond??
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager