J'ai un gros probl=E8me avec du code VBA. Je r=E9cup=E9re depuis=20
Access une requ=EAte et je l'ins=E9re dans Excel.
Mon format sous Access de mes donn=E9es, champ + donn=E9es:
Nombre
110
Dans Excel je n'affiche pas le nom de mes champs de=20
Access, je n'affiche que les donn=E9es, le r=E9sultat.=20
Je souhaite ins=E9rer le r=E9sultat de ma requ=EAte(ici 110) en=20
A12 par exemple et cela marche parfaitement. Mais si je=20
souhaite ins=E9rer le r=E9sultat d'une nouvelle requ=EAte en A13=20
alors les donn=E9es en A12 disparaissent.
J'utilise ce code pour ins=E9rer mon code en A12:
Sub CopyFromRecordsetInter()
Dim Db1 As Database
Dim Rs1 As Recordset, Nb As Long
Dim Sh As Worksheet, Rg As Range, Nl As Range
Dim Chemin As String, Fichier As String
'Cette variable te permet de d=E9terminer
'le type de bordure d=E9sir=E9...
Dim bordure As MsoLineStyle
'efface le signe =E9gal...et lorsque tu
'le remplace, tu auras la liste des
'constantes disponibles
bordure =3D msoLineStyleMixed
'utilise une variable pour la feuille et la premi=E8re
'cellule o=F9 seront copi=E9es les donn=E9es...
Set Sh =3D Worksheets("Feuil1")
With Sh
Set Rg =3D .Range("A12")
End With
'D=E9finir le chemin de la base de donn=E9es "ici en chemin=20
absolu et non relatif " =E0 ouvrir
Set Db1 =3D DBEngine.OpenDatabase(ThisWorkbook.Path=20
& "\Exemple.mdb")
'D=E9finir la requ=EAte de la base de donn=E9es =E0 ouvrir
Set Rs1 =3D Db1.OpenRecordset("REPORTING: Nbre Inter",=20
dbOpenDynaset)
'Efface toutes les donn=E9es se trouvant dans la plage
'de cellules devant recevoir les nouvelles donn=E9es.
Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1=20
enregistrement
If Rs1.EOF =3D False Then
'copie les donn=E9es du recordset vers la feuille...j'ai=20
essay=E9 plusieurs solutions et sans r=E9sultat.
Rg.Value =3D "Aucun enregistrement trouv=E9."
'message si aucun enregistrement n'est trouv=E9.
End If
'Lib=E8re l'espaces m=E9moire des objets utilis=E9s
Set Rg =3D Nothing: Set Sh =3D Nothing
'Ferme le recordset et la base de donn=E9es
Rs1.Close: Db1.Close
'Lib=E8re la m=E9moire des objets
Set Rs1 =3D Nothing: Set Db1 =3D Nothing
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour Jean,
sur la macro tu défénie l'objet plage Set Rg = .Range("A12")
et quelque (4) lignes plus bas tu effaces le contenu de cette plage Rg.CurrentRegion.Clear
isabelle
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données: Nombre 110
Dans Excel je n'affiche pas le nom de mes champs de Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en A12 par exemple et cela marche parfaitement. Mais si je souhaite insérer le résultat d'une nouvelle requête en A13 alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter() Dim Db1 As Database Dim Rs1 As Recordset, Nb As Long Dim Sh As Worksheet, Rg As Range, Nl As Range Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer 'le type de bordure désiré... Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu 'le remplace, tu auras la liste des 'constantes disponibles bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première 'cellule où seront copiées les données... Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
'Définir le chemin de la base de données "ici en chemin absolu et non relatif " à ouvrir Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Exemple.mdb") 'Définir la requête de la base de données à ouvrir Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter", dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage 'de cellules devant recevoir les nouvelles données. Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1 enregistrement If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé." 'message si aucun enregistrement n'est trouvé. End If
'Libère l'espaces mémoire des objets utilisés Set Rg = Nothing: Set Sh = Nothing 'Ferme le recordset et la base de données Rs1.Close: Db1.Close 'Libère la mémoire des objets Set Rs1 = Nothing: Set Db1 = Nothing End Sub
Avez vous eu déjà ce problème ?.
Merci de votre aide,
Jean59
bonjour Jean,
sur la macro tu défénie l'objet plage
Set Rg = .Range("A12")
et quelque (4) lignes plus bas tu effaces le contenu de cette plage
Rg.CurrentRegion.Clear
isabelle
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis
Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données:
Nombre
110
Dans Excel je n'affiche pas le nom de mes champs de
Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en
A12 par exemple et cela marche parfaitement. Mais si je
souhaite insérer le résultat d'une nouvelle requête en A13
alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter()
Dim Db1 As Database
Dim Rs1 As Recordset, Nb As Long
Dim Sh As Worksheet, Rg As Range, Nl As Range
Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer
'le type de bordure désiré...
Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu
'le remplace, tu auras la liste des
'constantes disponibles
bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première
'cellule où seront copiées les données...
Set Sh = Worksheets("Feuil1")
With Sh
Set Rg = .Range("A12")
End With
'Définir le chemin de la base de données "ici en chemin
absolu et non relatif " à ouvrir
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path
& "Exemple.mdb")
'Définir la requête de la base de données à ouvrir
Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter",
dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage
'de cellules devant recevoir les nouvelles données.
Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1
enregistrement
If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai
essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé."
'message si aucun enregistrement n'est trouvé.
End If
'Libère l'espaces mémoire des objets utilisés
Set Rg = Nothing: Set Sh = Nothing
'Ferme le recordset et la base de données
Rs1.Close: Db1.Close
'Libère la mémoire des objets
Set Rs1 = Nothing: Set Db1 = Nothing
End Sub
sur la macro tu défénie l'objet plage Set Rg = .Range("A12")
et quelque (4) lignes plus bas tu effaces le contenu de cette plage Rg.CurrentRegion.Clear
isabelle
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données: Nombre 110
Dans Excel je n'affiche pas le nom de mes champs de Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en A12 par exemple et cela marche parfaitement. Mais si je souhaite insérer le résultat d'une nouvelle requête en A13 alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter() Dim Db1 As Database Dim Rs1 As Recordset, Nb As Long Dim Sh As Worksheet, Rg As Range, Nl As Range Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer 'le type de bordure désiré... Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu 'le remplace, tu auras la liste des 'constantes disponibles bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première 'cellule où seront copiées les données... Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
'Définir le chemin de la base de données "ici en chemin absolu et non relatif " à ouvrir Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Exemple.mdb") 'Définir la requête de la base de données à ouvrir Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter", dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage 'de cellules devant recevoir les nouvelles données. Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1 enregistrement If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé." 'message si aucun enregistrement n'est trouvé. End If
'Libère l'espaces mémoire des objets utilisés Set Rg = Nothing: Set Sh = Nothing 'Ferme le recordset et la base de données Rs1.Close: Db1.Close 'Libère la mémoire des objets Set Rs1 = Nothing: Set Db1 = Nothing End Sub
Avez vous eu déjà ce problème ?.
Merci de votre aide,
Jean59
Frédéric Sigonneau
Bonjour,
Si tu veux ajouter les résultats de tes requêtes en colonne A sans effacer les résultats précédents, supprime cette ligne (comme signalé par Isabelle) :
Rg.CurrentRegion.Clear
et, pour définir la première cellule libre en colonne A, au lieu de
Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
utilise plutôt :
With Worksheets("Feuil1") Set Rg=.Cells(Rows.Count,1).End(xlUp)(2) End With
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données: Nombre 110
Dans Excel je n'affiche pas le nom de mes champs de Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en A12 par exemple et cela marche parfaitement. Mais si je souhaite insérer le résultat d'une nouvelle requête en A13 alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter() Dim Db1 As Database Dim Rs1 As Recordset, Nb As Long Dim Sh As Worksheet, Rg As Range, Nl As Range Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer 'le type de bordure désiré... Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu 'le remplace, tu auras la liste des 'constantes disponibles bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première 'cellule où seront copiées les données... Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
'Définir le chemin de la base de données "ici en chemin absolu et non relatif " à ouvrir Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Exemple.mdb") 'Définir la requête de la base de données à ouvrir Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter", dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage 'de cellules devant recevoir les nouvelles données. Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1 enregistrement If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé." 'message si aucun enregistrement n'est trouvé. End If
'Libère l'espaces mémoire des objets utilisés Set Rg = Nothing: Set Sh = Nothing 'Ferme le recordset et la base de données Rs1.Close: Db1.Close 'Libère la mémoire des objets Set Rs1 = Nothing: Set Db1 = Nothing End Sub
Avez vous eu déjà ce problème ?.
Merci de votre aide,
Jean59
Bonjour,
Si tu veux ajouter les résultats de tes requêtes en colonne A sans effacer les
résultats précédents, supprime cette ligne (comme signalé par Isabelle) :
Rg.CurrentRegion.Clear
et, pour définir la première cellule libre en colonne A, au lieu de
Set Sh = Worksheets("Feuil1")
With Sh
Set Rg = .Range("A12")
End With
utilise plutôt :
With Worksheets("Feuil1")
Set Rg=.Cells(Rows.Count,1).End(xlUp)(2)
End With
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis
Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données:
Nombre
110
Dans Excel je n'affiche pas le nom de mes champs de
Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en
A12 par exemple et cela marche parfaitement. Mais si je
souhaite insérer le résultat d'une nouvelle requête en A13
alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter()
Dim Db1 As Database
Dim Rs1 As Recordset, Nb As Long
Dim Sh As Worksheet, Rg As Range, Nl As Range
Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer
'le type de bordure désiré...
Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu
'le remplace, tu auras la liste des
'constantes disponibles
bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première
'cellule où seront copiées les données...
Set Sh = Worksheets("Feuil1")
With Sh
Set Rg = .Range("A12")
End With
'Définir le chemin de la base de données "ici en chemin
absolu et non relatif " à ouvrir
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path
& "Exemple.mdb")
'Définir la requête de la base de données à ouvrir
Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter",
dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage
'de cellules devant recevoir les nouvelles données.
Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1
enregistrement
If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai
essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé."
'message si aucun enregistrement n'est trouvé.
End If
'Libère l'espaces mémoire des objets utilisés
Set Rg = Nothing: Set Sh = Nothing
'Ferme le recordset et la base de données
Rs1.Close: Db1.Close
'Libère la mémoire des objets
Set Rs1 = Nothing: Set Db1 = Nothing
End Sub
Si tu veux ajouter les résultats de tes requêtes en colonne A sans effacer les résultats précédents, supprime cette ligne (comme signalé par Isabelle) :
Rg.CurrentRegion.Clear
et, pour définir la première cellule libre en colonne A, au lieu de
Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
utilise plutôt :
With Worksheets("Feuil1") Set Rg=.Cells(Rows.Count,1).End(xlUp)(2) End With
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour,
J'ai un gros problème avec du code VBA. Je récupére depuis Access une requête et je l'insére dans Excel.
Mon format sous Access de mes données, champ + données: Nombre 110
Dans Excel je n'affiche pas le nom de mes champs de Access, je n'affiche que les données, le résultat.
Je souhaite insérer le résultat de ma requête(ici 110) en A12 par exemple et cela marche parfaitement. Mais si je souhaite insérer le résultat d'une nouvelle requête en A13 alors les données en A12 disparaissent.
J'utilise ce code pour insérer mon code en A12:
Sub CopyFromRecordsetInter() Dim Db1 As Database Dim Rs1 As Recordset, Nb As Long Dim Sh As Worksheet, Rg As Range, Nl As Range Dim Chemin As String, Fichier As String
'Cette variable te permet de déterminer 'le type de bordure désiré... Dim bordure As MsoLineStyle
'efface le signe égal...et lorsque tu 'le remplace, tu auras la liste des 'constantes disponibles bordure = msoLineStyleMixed
'utilise une variable pour la feuille et la première 'cellule où seront copiées les données... Set Sh = Worksheets("Feuil1") With Sh Set Rg = .Range("A12") End With
'Définir le chemin de la base de données "ici en chemin absolu et non relatif " à ouvrir Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "Exemple.mdb") 'Définir la requête de la base de données à ouvrir Set Rs1 = Db1.OpenRecordset("REPORTING: Nbre Inter", dbOpenDynaset)
'Efface toutes les données se trouvant dans la plage 'de cellules devant recevoir les nouvelles données. Rg.CurrentRegion.Clear
'Teste pour savoir si La table contient au moins 1 enregistrement If Rs1.EOF = False Then
'copie les données du recordset vers la feuille...j'ai essayé plusieurs solutions et sans résultat.
Rg.Value = "Aucun enregistrement trouvé." 'message si aucun enregistrement n'est trouvé. End If
'Libère l'espaces mémoire des objets utilisés Set Rg = Nothing: Set Sh = Nothing 'Ferme le recordset et la base de données Rs1.Close: Db1.Close 'Libère la mémoire des objets Set Rs1 = Nothing: Set Db1 = Nothing End Sub