Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplissage de ligne via sql sur 2 feuilles et suppression d'une l

8 réponses
Avatar
Franck G.
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE' AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////

8 réponses

Avatar
Paul V
Hello Franck,

Sans pouvoir tester, je pense qu'il s'agit d'un problème de temporisation.
Ton instruction de suppression est déjà traitée alors que la connexion n'est
pas close.
Il faudrait tester en mettant un temps d'attente après la fermeture de ta
connexion (que je ne vois pas dans ton code ;-) )

HTH

Paul V

"Franck G." a écrit dans le message de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////



Avatar
Franck G.
Bonjour Paul et merci de repondre aussi vite

J'ai regarder un peu dans l'aide mais je ne trouve rien concernant la
tempo,peux tu m'aiguiller SVP

Merci


Hello Franck,

Sans pouvoir tester, je pense qu'il s'agit d'un problème de temporisation.
Ton instruction de suppression est déjà traitée alors que la connexion n'est
pas close.
Il faudrait tester en mettant un temps d'attente après la fermeture de ta
connexion (que je ne vois pas dans ton code ;-) )

HTH

Paul V

"Franck G." a écrit dans le message de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////








Avatar
Paul V
Hello Franck,

Il y a bien longtemps que j'ai plus fait ce genre de chose ;-)

Essaye d'abord de cloturer ta connexion avec

set connstring = nothing

Normalement, cela devrait resoudre ton problème.

A+

Paul V


"Franck G." a écrit dans le message de
news:
Bonjour Paul et merci de repondre aussi vite

J'ai regarder un peu dans l'aide mais je ne trouve rien concernant la
tempo,peux tu m'aiguiller SVP

Merci


Hello Franck,

Sans pouvoir tester, je pense qu'il s'agit d'un problème de
temporisation.
Ton instruction de suppression est déjà traitée alors que la connexion
n'est
pas close.
Il faudrait tester en mettant un temps d'attente après la fermeture de ta
connexion (que je ne vois pas dans ton code ;-) )

HTH

Paul V

"Franck G." a écrit dans le message
de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la
feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne
rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT
mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays =
'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////










Avatar
Franck G.
Merci pour ton aide Paul, mais cela n'a pas résolu mon soucis.

Je vais continuer mes recherches dans l'aide et internet ,
et si des fois tu avait une autre solution, je suis toujours preneur.

Merci et Bonne Soirée


Hello Franck,

Il y a bien longtemps que j'ai plus fait ce genre de chose ;-)

Essaye d'abord de cloturer ta connexion avec

set connstring = nothing

Normalement, cela devrait resoudre ton problème.

A+

Paul V


"Franck G." a écrit dans le message de
news:
Bonjour Paul et merci de repondre aussi vite

J'ai regarder un peu dans l'aide mais je ne trouve rien concernant la
tempo,peux tu m'aiguiller SVP

Merci


Hello Franck,

Sans pouvoir tester, je pense qu'il s'agit d'un problème de
temporisation.
Ton instruction de suppression est déjà traitée alors que la connexion
n'est
pas close.
Il faudrait tester en mettant un temps d'attente après la fermeture de ta
connexion (que je ne vois pas dans ton code ;-) )

HTH

Paul V

"Franck G." a écrit dans le message
de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la
feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne
rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT
mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays =
'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////















Avatar
Paul V
Re Frank,

J'imagine que tu as testé ton instruction de suppression at qu'elle est
correcte ;-)
Il faudrait tester si c'est l'execution de la connexion qui bloque ta
suppression ou si c'est autre chose.
J'ai le sentiment que la suppression se fait avant la fin de la connexion et
que dès lors ta connexion réincrit la première ligne après.
Je te suggere donc de commencer par mettre un temps d'attente avant
l'execution de la suppression.
Par exemple sous forme de boucle vide
For i = 1 to 100000000
next i
Ceci devrait permettre à ta connexion de terminer son boulot.
Tu change la valeur en fionction de la durée de ta connexion.

Tu pourrais aussi insérer un message pour voir si toute instruction est
bloquée ou si c'est uniquement la suppression.

Tiens moi au courant

A+

Paul V




"Franck G." a écrit dans le message de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////



Avatar
Franck G.
Bonjour Paul,

J'ai fait pas mal de tests.
- avec deux procedures distinct : une France et l'autre Export

Je lance une macro qui me lance c 2 procedures
et
la procedure supprimeligne
j'intercal entre les 2 procedure et la procedure supprimeligne

- une boucle que tu propose
- des messages MsgBox""
- un arrêt d'application pendant 10s via ce code et je supprime la ligne voulu
If Application.Wait(Now + TimeValue("0:00:10")) Then
MsgBox "Temps écoulé"

Avec ou sans ce qui suis.......
Worksheets("EXPORT").Activate
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

Worksheets("FRANCE").Activate
Range("A4:S4").Select
Selection.Delete Shift:=xlUp
................................................
End If

Enfin, j'ai essayé plein de truc

Je met un message en fin de chaque procedure
Excel affiche le message de la première alors qu'il est en lecture des
données sql
"Excel m'affiche le message alors qu'il ne pas récpéerer les données"
on dirait qu'excel lit toute les procedures avant même d'exécuter la première.

C sure que dans mon programme quelque chose cloche avec ce bout de code :
With ActiveSheet.QueryTables.Add(Connection:=Connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With

j'ai retourner les procedures dans tous les sens, enfin dans mes limites.


je crois que je vais lacher l'affaire parce que si je lance la procedure
manuellement apres ma procedure de récupération de données cela fonctionne

Il faudra juste appuyer sur le bouton une fois le premier traitement terminer.
ça devrait pas être trop dure pour l'utilisatrice


Dans tout les cas, je te remercie pour ton aide
@+





Re Frank,

J'imagine que tu as testé ton instruction de suppression at qu'elle est
correcte ;-)
Il faudrait tester si c'est l'execution de la connexion qui bloque ta
suppression ou si c'est autre chose.
J'ai le sentiment que la suppression se fait avant la fin de la connexion et
que dès lors ta connexion réincrit la première ligne après.
Je te suggere donc de commencer par mettre un temps d'attente avant
l'execution de la suppression.
Par exemple sous forme de boucle vide
For i = 1 to 100000000
next i
Ceci devrait permettre à ta connexion de terminer son boulot.
Tu change la valeur en fionction de la durée de ta connexion.

Tu pourrais aussi insérer un message pour voir si toute instruction est
bloquée ou si c'est uniquement la suppression.

Tiens moi au courant

A+

Paul V




"Franck G." a écrit dans le message de
news:
Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////








Avatar
Franck G.
Re-bonjour Paul,

Pour faire suite à mon message précédent, un peu j'en ai marre d'excel ;)
Je viens de trouver la solution (j'ai quand même persévérer...et cela à
porter ses fruits)

c'était bien le petit bout de code cité au message précedent, il manquait
une petite chose. """BackgroundQuery:úlse"""

With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh BackgroundQuery:úlse
End With

Voilà, si cela t'intéresse !

Merci pour tout
A+







Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE' AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////



Avatar
Paul V
Merci pour l'info

A+

Paul V

"Franck G." a écrit dans le message de
news:
Re-bonjour Paul,

Pour faire suite à mon message précédent, un peu j'en ai marre d'excel ;)
Je viens de trouver la solution (j'ai quand même persévérer...et cela à
porter ses fruits)

c'était bien le petit bout de code cité au message précedent, il manquait
une petite chose. """BackgroundQuery:úlse"""

With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh BackgroundQuery:úlse
End With

Voilà, si cela t'intéresse !

Merci pour tout
A+







Bonjour,
Pouvez-vous m'aider svp, je m'en sort pas.
Voici ce que je fais :

J'ai 2 feuilles nommé FRANCE et EXPORT DANS UN CLASSEUR
Je remplis la feuille France et Export en récupérant les données depuis
sql
via la procedure "FRANCE_EXPORT" plus bas dans le message.
Le remplissage ce fais bien sur mes deux feuilles, en activant la feuille
au
moment voulu.
par contre, comme je veux pas afficher les titres récupérer depuis la
requete sql, je les laisse à blancs.
Ce qui provoque une ligne vide dans excel(c voulu et apparement pas le
choix)
Donc j'essai de la supprimer après chaque remplissage d'une feuille
mais cela ne fonctionne pas.

Par contre si je crée une procédure "SupprimerligneVide", et que je la
lance manuellement apres avoir cliquer sur une des deux feuille cela
fonctionne.

Alors je comprends pas pourquoi, si je la mais dans ma procedure
FRANCE_EXPORT cela ne fonctionne pas.

Meme si je lance la procédure "SupprimerligneVide", juste après la
premiere
procedure de remplissage cela ne fonctionne pas non plus.
J'ai beau activer les feuilles dans le code de suppression de ligne rien
y
fais

Petit code que j'ai tester apres chaque END WITH de la procedure
FRANCE_EXPORT
Range("A4:S4").Select
Selection.Delete Shift:=xlUp

mais soit ça me bloque le remplissage de la feuille FRANCE ou EXPORT
mais
dans les deux cas aucune ligne supprimé.

Pouvez-vous m'aider SVP


////DEBUT///////
Sub FRANCE_EXPORT()
Dim qt As QueryTable
Dim datd As String

datd = Format(Cells(3, 1), "yyyy-mm-dd")

sqlstring = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ' , ................... WHERE CLI.Pays = 'FRANCE'
AND
FAVE.DATEFACTURATION = {d '" + datd + "'}"

sqlstring1 = " SELECT CLI.Pays AS ' ' , FAVE.CodeClient as ' ',
FAVE.Representant as ' ',..............WHERE CLI.Pays = 'EXPORT' and
FAVE.DATEFACTURATION = {d '" + datd + "'}"

connstring = _
"ODBC;DSN=coucou;UID=coucou;PWD=coucou"


Worksheets("FRANCE").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring)
.Refresh
End With

Worksheets("EXPORT").Activate
If ActiveSheet.QueryTables.Count > 0 Then
ActiveSheet.QueryTables(1).Delete
End If
ActiveSheet.Range("A4:S65000").Clear
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("A4:S65000"), Sql:=sqlstring1)
.Refresh
End With
End Sub
////////FIN/////////////////////