bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un
champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est
vide)
-regarder dans la ligne si une case à une valeur que
j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes
valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de
requête
SQL pour selectionner uniquements les lignes qui m'interessent (un
petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un
champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est
vide)
-regarder dans la ligne si une case à une valeur que
j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes
valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de
requête
SQL pour selectionner uniquements les lignes qui m'interessent (un
petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un
champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est
vide)
-regarder dans la ligne si une case à une valeur que
j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes
valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de
requête
SQL pour selectionner uniquements les lignes qui m'interessent (un
petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" a écrit dans le message de
news:bdupce$i3k$
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" <francois.lebaudy@sncf.fr> a écrit dans le message de
news:bdupce$i3k$1@muguet.sncf.fr...
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" a écrit dans le message de
news:bdupce$i3k$
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" a écrit dans le message de
news:bdupce$i3k$
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" <francois.lebaudy@sncf.fr> a écrit dans le message de
news:bdupce$i3k$1@muguet.sncf.fr...
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.
Bonjour Fly,
J'ai retenu une des suggestions de Clément qui est d'utiliser ADO et
extraire directement par une requête les informations
sur des fichiers vers un nouveau document excel.
L'exemple qui suit suppose que les données sont situées dans un fichier
excel
Dans ta question cependant, tu ne dis pas expressément :
A ) est-ce que tes données sont dans des fichiers Excel ?
B ) Où sont tes fichiers qui doivent faire l'objet d'une requête ?
Tous dans le même répertoire ? Dans une liste que tu connais ?
C ) Pour pouvoir faire "La même requête sur plusieurs fichiers différents
, est-ce que la feuille qui contient ces données a
la même structure ? Est-ce que cette feuille a le même nom ?
Si tous tes fichiers excel ont exactement la même structure et le même nom
comme onglet de la feuille, il ne te reste plus
qu'à installé la procédure donnée en exemple dans une boucle sur
l'ensemble des fichiers.
Pour écrire la requête dans une syntaxe, Tu peux te faire aider par Query
ou Access pour la syntaxe !!!
'-----------------------------------------------
Sub MaRequêteAvecADO()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, Rg As Range
Dim File As String, C As Integer, Ok As Integer
'Fichier sur lequel se fera la requête :
File = "C:testQuery.xls"
'Nom de la feuille du fichier où sont les données
'Dans la requête, j'utilise la variable.
NomFeuille = "denis"
'Défini la première cellule où seront copiées les
'données des requêtes ADO
With Worksheets("Feuil1")
If .Range("A1") = "" Then
Set Rg = .Range("A1")
Else
Set Rg = .Range("A" & .Range("A65356").End(xlUp).Row)(2)
Ok = 1
End If
End With
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$]"
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie les étiquettes du recordset vers Excel
If Ok <> 1 Then
Do
Rg.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Rg.Offset(1).CopyFromRecordset Rst
Else
Rg.CopyFromRecordset Rst
End If
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
Salutations!
"Fly" a écrit dans le message de
news:bdupce$i3k$
bonjour,
je viens de me trouver au problème suivant :
on me demande dc'ecrire une macro sous excel qui
-recherche dans douze fichiers toutes les lignes dont un champs à
une certaines valeurs (il y a des lignes pour lequels la colonne est vide)
-regarder dans la ligne si une case à une valeur que j'appelerai
Valeur
-si c'est le cas, faire la somme avec les précedentes valeurs.
mais, je voudrais savoir si il y a moyen de faire une sorte de requête
SQL pour selectionner uniquements les lignes qui m'interessent (un petit
milier sur les 48000) que comporte chaque fichiers en moyenne)
Si tel n'est pas le cas, pourrait-on me conseiller avec quel
application
le faire ou si je dois la faire moi-même en VB (je suis un assez bon
programmeur).
Merci par avance.