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

Lire une plage de donnée dans un fichier fermé

4 réponses
Avatar
Andre.L'HOIR
Bonjour à tous,

J'aimerais recopier une plage de donnée d'un fichier excel fermé pour le copier
dans le fichier en cours.

Sur le site d'excelabo (que je remercie au passage) m'a fourni des exemples.
Cela fonctionne mais, lorsque les cellules (du fichier fermé) sont vides, il
mais dans la feuille de résultat un '0'.

Y a t'il un moyen (par vba) de copier une plage de donnée en mettant uniquement
les valeurs?

Ce que j'ai déjà fait c'est une routine qui supprime les '0'. Mais vu la
quantité de donnée (12000 lignes sur 220 colonnes) cela prend un temps infernal.
Donc si je saurais recopier les données en évitant les '0' se serais plus
rapide.

Un grand merci à tous.

André

Voici le code que je possède actuellement:

1° - Le code le plus rapide :

Sub GetValues(fPath As String, FName As String, sName, cellRange As String,
place As String)
' paramètres:
' fPath : Chemin du fichier à lire
' FName : Nom du fichier à lire
' sName : Nom de la feuille à lire
' cellRange : plage de cellule à lire
' place : destination des données
' ---------------------------------------------------

With ActiveWorkbook.Worksheets(sName).Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "'!" & _
cellRange
.Value = .Value
End With
End Sub

2° - Cet exemple fonctionne aussi, mais c'est très lent, car il lit cellule par
cellule.

Private Function GetValue(fpath, fName, sName, cellRange)

Dim arg As String

If Right(fpath, 1) <> "\" Then fpath= fpath & "\"
If Dir(fpath & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

arg = "'" & fpath & "[" & fName & "]" & sName & "'!" & _
Range(cellRange).Range("A1").Address(, , xlR1C1)

' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function

4 réponses

Avatar
JB
Bonjour,

http://boisgontierjacques.free.fr/pages_site/cellules.htm#Récupération

JB
http://boisgontierjacques.free.fr

On 22 oct, 10:43, Andre.L' wrote:
Bonjour à tous,

J'aimerais recopier une plage de donnée d'un fichier excel fermé pour le copier
dans le fichier en cours.

Sur le site d'excelabo (que je remercie au passage) m'a fourni des exempl es.
Cela fonctionne mais, lorsque les cellules (du fichier fermé) sont vide s, il
mais dans la feuille de résultat un '0'.

Y a t'il un moyen (par vba) de copier une plage de donnée en mettant un iquement
les valeurs?

Ce que j'ai déjà fait c'est une routine qui supprime les '0'. Mais vu la
quantité de donnée (12000 lignes sur 220 colonnes) cela prend un temp s infernal.
Donc si je saurais recopier les données en évitant les '0' se serais plus
rapide.

Un grand merci à tous.

André

Voici le code que je possède actuellement:

1° - Le code le plus rapide :

Sub GetValues(fPath As String, FName As String, sName, cellRange As Strin g,
place As String)
' paramètres:
' fPath : Chemin du fichier à lire
' FName : Nom du fichier à lire
' sName : Nom de la feuille à lire
' cellRange : plage de cellule à lire
' place : destination des données
' ---------------------------------------------------

With ActiveWorkbook.Worksheets(sName).Range(place)
.FormulaArray = "='" & fPath & "[" & FName & "]" & sName & "' !" & _
cellRange
.Value = .Value
End With
End Sub

2° - Cet exemple fonctionne aussi, mais c'est très lent, car il lit c ellule par
cellule.

Private Function GetValue(fpath, fName, sName, cellRange)

Dim arg As String

If Right(fpath, 1) <> "" Then fpath= fpath & ""
If Dir(fpath & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

arg = "'" & fpath & "[" & fName & "]" & sName & "'!" & _
Range(cellRange).Range("A1").Address(, , xlR1C1)

' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function


Avatar
Andre.L'HOIR
Bonjour,

Jaimerais bien essayer votre lien, mais il ne fonctionne pas. J'ai un "time out"
Pourriez-vous controlez l'adresse URL svp

Merci de votre support

Andre


Bonjour,

http://boisgontierjacques.free.fr/pages_site/cellules.htm#Récupération

JB
http://boisgontierjacques.free.fr

On 22 oct, 10:43, Andre.L' wrote:
Bonjour à tous,

J'aimerais recopier une plage de donnée d'un fichier excel fermé pour > le copier
dans le fichier en cours.

Sur le site d'excelabo (que je remercie au passage) m'a fourni des exempl >es.
Cela fonctionne mais, lorsque les cellules (du fichier fermé) sont vide >s, il
mais dans la feuille de résultat un '0'.





Avatar
JB
Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path
Fichier = "stock.xls"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "[" & Fichier &
"]" & onglet & "'!" & ChampAlire
Range(ChampOuCopier) = Range(ChampOuCopier).Value
End Sub

JB

On 22 oct, 13:26, Andre.L' wrote:
Bonjour,

Jaimerais bien essayer votre lien, mais il ne fonctionne pas. J'ai un "ti me out"
Pourriez-vous controlez l'adresse URL svp

Merci de votre support

Andre





Bonjour,

http://boisgontierjacques.free.fr/pages_site/cellules.htm#Récupé r...

JB
http://boisgontierjacques.free.fr

On 22 oct, 10:43, Andre.L' wrote:
Bonjour à tous,

J'aimerais recopier une plage de donnée d'un fichier excel ferm= E9 pour=
le copier

dans le fichier en cours.

Sur le site d'excelabo (que je remercie au passage) m'a fourni des exe mpl=
es.

Cela fonctionne mais, lorsque les cellules (du fichier fermé) sont vide=
s, il

mais dans la feuille de résultat un '0'.- Masquer le texte des mes sages précédents -



- Afficher le texte des messages précédents -




Avatar
Andre.L'HOIR
Bonjour

C'est sympa !... Merci de votre aide !

A charge de revanche.

Andre


Sub LitClasseurFermé()
ChampOuCopier = "A1:A4"
Chemin = ThisWorkbook.Path
Fichier = "stock.xls"
onglet = "Janvier"
ChampAlire = "B2:B5"
LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
End Sub

Sub LitChamp(ChampOuCopier, Chemin, Fichier, onglet, ChampAlire)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "[" & Fichier &
"]" & onglet & "'!" & ChampAlire
Range(ChampOuCopier) = Range(ChampOuCopier).Value
End Sub

JB

On 22 oct, 13:26, Andre.L' wrote:
Bonjour,

Jaimerais bien essayer votre lien, mais il ne fonctionne pas. J'ai un "ti >me out"
Pourriez-vous controlez l'adresse URL svp

Merci de votre support

Andre





Bonjour,

http://boisgontierjacques.free.fr/pages_site/cellules.htm#Récupé >r...

JB
http://boisgontierjacques.free.fr

On 22 oct, 10:43, Andre.L' wrote:
Bonjour à tous,

J'aimerais recopier une plage de donnée d'un fichier excel ferm= >E9 pour=
le copier

dans le fichier en cours.

Sur le site d'excelabo (que je remercie au passage) m'a fourni des exe >mpl=
es.

Cela fonctionne mais, lorsque les cellules (du fichier fermé) sont > vide=
s, il

mais dans la feuille de résultat un '0'.- Masquer le texte des mes >sages précédents -



- Afficher le texte des messages précédents -