OVH Cloud OVH Cloud

Liens en VBA et mise à jour

7 réponses
Avatar
YANN24
Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:\Documents and Settings\User144\Mes
documents\B.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub

7 réponses

Avatar
MichDenis
Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub
Avatar
YANN24
Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub


Avatar
MichDenis
En macro,

Il est impossible de copier des formats de cellules et leur valeur sans ouvrir le fichier.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier
totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée
vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub


Avatar
YANN24
OK, merci. Donc, il faut que je mette des formules. Mais y a t il une macro
car fainéant, je n'ai pas envie de me tapper trop de formules à écrire?
merci.
YANN


En macro,

Il est impossible de copier des formats de cellules et leur valeur sans ouvrir le fichier.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier
totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée
vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub







Avatar
MichDenis
Moi, je ne suis plus... si tu copies la plage de cellules, pourquoi veux-tu copier les formules à la main ?

De quelles formules s'agit-il ?


Salutation!


"YANN24" a écrit dans le message de news:

OK, merci. Donc, il faut que je mette des formules. Mais y a t il une macro
car fainéant, je n'ai pas envie de me tapper trop de formules à écrire?
merci.
YANN


En macro,

Il est impossible de copier des formats de cellules et leur valeur sans ouvrir le fichier.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier
totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée
vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur
le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub







Avatar
YANN24
Re,
désolé pour le cafouilli, je vais essayer d'être clair.
Ce que je veus te dire, c'est que si je met dans mon fichier A, une formule
dans chaque celulle "=SI([B.xls]CP05!A1="";"";[B.xls]CP05!A1)",
l'actualisation se fait, sans avoir besoin d'ouvrir mon fichier B.
Donc, sur mon fihier A, feuille "CP", je veux récupérer les données des
feuilles "CP05" des fichiers, B, C, etc..
En fait ma feuille "CP" de mon fichier se présenterais de cette manière, sur
les colonnes A à P :
lignes 1 à 20 : copie du tableau du fichier B
lignes 22 à 42 : copie du tableau du fichier C
lignes 44 à 64 : copie du tableau du fichier D

donc, y-a-t-il un moyen de mettre une macro afin de faire la même chose que
la formule, mais sans avoir à taper toutes ces formules? En délimitant les
zones de copie bien sûr (celulles A1 : P20 de B à copier en A1 : P20 de A,
puis A1 : P20 de C à copier en A22 : P42 de A).

Merci si tu comprends.
YANN


Moi, je ne suis plus... si tu copies la plage de cellules, pourquoi veux-tu copier les formules à la main ?

De quelles formules s'agit-il ?


Salutation!


"YANN24" a écrit dans le message de news:

OK, merci. Donc, il faut que je mette des formules. Mais y a t il une macro
car fainéant, je n'ai pas envie de me tapper trop de formules à écrire?
merci.
YANN


En macro,

Il est impossible de copier des formats de cellules et leur valeur sans ouvrir le fichier.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier
totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas copiée
vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur
le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub












Avatar
MichDenis
Bonjour Yann24,

Si tes formules fonctionnent déjà très bien, pourquoi voudrais-tu une macro qui fasse la même chose ? Qu'est-ce que la
macro est supposée de faire de plus que tes formules ? Pourquoi vouloir une macro à tout prix ? Je suis pour le moins
perplexe confronté à ta demande.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
désolé pour le cafouilli, je vais essayer d'être clair.
Ce que je veus te dire, c'est que si je met dans mon fichier A, une formule
dans chaque celulle "=SI([B.xls]CP05!A1="";"";[B.xls]CP05!A1)",
l'actualisation se fait, sans avoir besoin d'ouvrir mon fichier B.
Donc, sur mon fihier A, feuille "CP", je veux récupérer les données des
feuilles "CP05" des fichiers, B, C, etc..
En fait ma feuille "CP" de mon fichier se présenterais de cette manière, sur
les colonnes A à P :
lignes 1 à 20 : copie du tableau du fichier B
lignes 22 à 42 : copie du tableau du fichier C
lignes 44 à 64 : copie du tableau du fichier D

donc, y-a-t-il un moyen de mettre une macro afin de faire la même chose que
la formule, mais sans avoir à taper toutes ces formules? En délimitant les
zones de copie bien sûr (celulles A1 : P20 de B à copier en A1 : P20 de A,
puis A1 : P20 de C à copier en A22 : P42 de A).

Merci si tu comprends.
YANN


Moi, je ne suis plus... si tu copies la plage de cellules, pourquoi veux-tu copier les formules à la main ?

De quelles formules s'agit-il ?


Salutation!


"YANN24" a écrit dans le message de news:

OK, merci. Donc, il faut que je mette des formules. Mais y a t il une macro
car fainéant, je n'ai pas envie de me tapper trop de formules à écrire?
merci.
YANN


En macro,

Il est impossible de copier des formats de cellules et leur valeur sans ouvrir le fichier.


Salutations!


"YANN24" a écrit dans le message de news:

Re,
d'accord, c'est mieux. Mais, il n'y a pas moyen de récupérer les données
sans ouvrir mon fichier B ?
Car en formules, ça se met à jour automatiquement. Donc, ce n'est pas
possible en macro? Dans ce cas, la mise en forme serait perdue, mais ce n'est
pas grave, je pourrais me débrouiller.
Donc, en résumé, peut on avoir une macro qui remplace ma formule :
"=SI([B.xls]CP!A1="";"";[B.xls]CP!A1)"

Sur mon fichier A feuille "CP", je veux, à suivre, les valeurs des celulles
A1 à P20 du fichier B (sur la plage A1 à P20), puis les valeurs des cellules
A1 à P20 du fichier C (sur la plage A22 à P41), et etc.

Merci. YANN


Bonjour Yann24,

La seule façon de reproduire totalement le format d'une feuille (plage) vers une autre feuille, est de copier
totalement
la feuille... lorsque tu copies une plage de cellules, il y a au moins la hauteur des lignes qui ne sera pas
copiée
vers
la plage de destination.

Par exemple : au lieu de ceci :
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")

Tu aurais cela :
Set Rg = Workbooks("B.xls").Worksheets(2).Cells

Il existe une façon de s'en sortir ...pour ce qui est de la hauteur des lignes de plage copiée... à cet égard, sur
le
site de Frédéric Sigonneau, tu trouveras une macro sur le sujet (hauteur des lignes de la plage copiée)


Salutations!


"YANN24" a écrit dans le message de news:

Bonjour,
voilà, j'ai 2 fichiers A et B, et je voudrais copier dans mon fichier A, une
plage de celulles de mon fichier B. J'ai un emacro pour celà, mais le hic,
c'est que je dois obligatoirement ouvrir mon fichier B. Puis-je avoir la même
opération (c'est à dire un copier de B vers A avec respect de la mise en
forme). Voici ma macro.
Meci d'avance. YANN

Sub ValeurExterne()
On Error Resume Next
Windows("B").Activate
If Err.Number <> 0 Then
Err.Clear
MsgBox "fichier non ouvert"
Workbooks.Open Filename:="C:Documents and SettingsUser144Mes
documentsB.xls"
End If

Dim Rg As Range
Application.ScreenUpdating = False
'Classeur Source
Set Rg = Workbooks("B.xls").Worksheets(2).Range("A1:E25")
Rg.Copy
'Classeur destination
With Workbooks("A.xls").Worksheets(4)
.Activate
.Range("A1").Activate
.Paste
.Range("A1").Select
End With
Rg.Parent.Activate
Application.CutCopyMode = False
Set Rg = Nothing

End Sub