OVH Cloud OVH Cloud

Lier 2 fichiers excel

7 réponses
Avatar
Mesa
Bjr j'ai un enorme probl=E8me :=20
J'ai 2 fichiers excel :
- un premier qui historise les valeurs
- un second qui sert =E0 extraire les donn=E9es de=20
l'historique et qui les traites.

Dans le fichier historique j'ai 40 feuilles avec une ligne=20
de valeurs XXX

Dans le fichier extraction je voudrais :=20

-Ce fichier doit incorporer les m=EAme feuilles que le=20
fichier historique (=E7a c'est d=E9j=E0 fait), mais je voudrais=20
que si je cre=E9 une nouvelle feuille dans historique, que=20
ma macro dans le fichier extraction mette automatiquement=20
=E0 jour un cr=E9e aussi une feuille avec le m=EAme nom dans le=20
fichier extraction (idem si je supprime une feuille dans=20
historique, je voudrais que =E7a la supprime auto dans=20
extraction).

- Pouvoir copier une ligne (identique dans chaque feuille=20
sauf une nomm=E9e liste) des feuilles du fichier historique=20
vers les feuilles qui ont le m=EAme nom dans le fichier=20
exctration. Bon cette copie doit se faire de ligne en=20
colonne mais =E7a c'est ok.
Donc pour chaque feuille d'historique je voudrais qu'il=20
copie et mette =E0 jour les feuilles du m=EAme noms dans=20
extraction.

Franchement si qq'un y arrive je serais echant=E9 et tr=E8s=20
reconnaissant, car l=E0 je suis devant un mur et =E9tant un=20
poil d=E9butant j'ai du mal, je mets des codes bout =E0 bout=20
mais sans succ=E8s.

Merci d'avance
Eric

7 réponses

Avatar
Michel HOLDERITH
Salut,
un debut de piste pour la creation et la suppression de tes feuilles :

Sub feuille()
Windows("fichier1.xls").Activate
Sheets.Select
Windows("fichier2.xls").Activate
Sheets.Select
If Windows("fichier1.xls").SelectedSheets.Count >
Windows("fichier2.xls").SelectedSheets.Count Then
Windows("fichier1.xls").Activate
For P = 1 To Sheets.Count
Windows("fichier1.xls").Activate
On Error Resume Next
Sheets(P).Select
Windows("fichier2.xls").Activate
For P2 = 1 To Sheets.Count
Sheets(P2).Select
If Windows("fichier1.xls").ActiveSheet.Name Windows("fichier2.xls").ActiveSheet.Name Then
BOUCLE = "OK"
GoTo YO
Else
BOUCLE = "PAS OK"
End If
Next P2
If BOUCLE = "PAS OK" Then
'SUPPRESSION FEUILLE
Windows("fichier1.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
End If
YO:
Next P
Else
Windows("fichier2.xls").Activate
For P3 = 1 To Sheets.Count
Windows("fichier2.xls").Activate
On Error Resume Next
Sheets(P3).Select
Windows("fichier1.xls").Activate
For PP = 1 To Sheets.Count
Sheets(PP).Select
If Windows("fichier2.xls").ActiveSheet.Name Windows("fichier1.xls").ActiveSheet.Name Then
BOUCLE = "OK"
GoTo ZO
Else
BOUCLE = "PAS OK"
End If
Next PP
If BOUCLE = "PAS OK" Then
'CREATION FEUILLE
Sheets.Add
Windows("fichier1.xls").ActiveSheet.Name Windows("fichier2.xls").ActiveSheet.Name
End If
ZO:
Next P3
End If
End Sub

@+
Michel.

"Mesa" wrote in message
news:03d601c3a90f$a2a287b0$
Bjr j'ai un enorme problème :
J'ai 2 fichiers excel :
- un premier qui historise les valeurs
- un second qui sert à extraire les données de
l'historique et qui les traites.

Dans le fichier historique j'ai 40 feuilles avec une ligne
de valeurs XXX

Dans le fichier extraction je voudrais :

-Ce fichier doit incorporer les même feuilles que le
fichier historique (ça c'est déjà fait), mais je voudrais
que si je creé une nouvelle feuille dans historique, que
ma macro dans le fichier extraction mette automatiquement
à jour un crée aussi une feuille avec le même nom dans le
fichier extraction (idem si je supprime une feuille dans
historique, je voudrais que ça la supprime auto dans
extraction).

- Pouvoir copier une ligne (identique dans chaque feuille
sauf une nommée liste) des feuilles du fichier historique
vers les feuilles qui ont le même nom dans le fichier
exctration. Bon cette copie doit se faire de ligne en
colonne mais ça c'est ok.
Donc pour chaque feuille d'historique je voudrais qu'il
copie et mette à jour les feuilles du même noms dans
extraction.

Franchement si qq'un y arrive je serais echanté et très
reconnaissant, car là je suis devant un mur et étant un
poil débutant j'ai du mal, je mets des codes bout à bout
mais sans succès.

Merci d'avance
Eric
Avatar
J'ai légèrement modifié ton code qui ne fonctionne
toujours pas pourrais tu m'aider histoire d'améliorer tout
ça. Voici les modifs :

Sub feuille()
test.xls.Activate
Sheets.Select
testextra.xls.Activate
Sheets.Select
If test.xls.SelectedSheets.Count Then
If tetestextra.xls.SelectedSheets.Count Then
test.xls.Activate
For P = 1 To Sheets.Count
test.xls.Activate
On Error Resume Next
SheetsP.Select
testextra.xls.Activate
For P2 = 1 To Sheets.Count
SheetsP2.Select
If test.xls.ActiveSheet.Name =
testextra.xls.ActiveSheet.Name Then
BOUCLE = "OK"
GoTo YO
Else
BOUCLE = "PAS OK"
End If
Next P2
If BOUCLE = "PAS OK" Then
'SUPPRESSION feuille
Windowsfichier1.xls.Activate
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
End If
YO:
Next P
Else
Windowsfichier2.xls.Activate
For P3 = 1 To Sheets.Count
Windowsfichier2.xls.Activate
On Error Resume Next
SheetsP3.Select
Windowsfichier1.xls.Activate
For PP = 1 To Sheets.Count
SheetsPP.Select
If test.xls.ActiveSheet.Name =
testextra.xls.ActiveSheet.Name Then
BOUCLE = "OK"
GoTo ZO
Else
BOUCLE = "PAS OK"
End If
Next PP
If BOUCLE = "PAS OK" Then
'CREATION feuille
Sheets.Add
If test.xls.ActiveSheet.Name =
testextra.xls.ActiveSheet.Name Then

End If
ZO:
Next P3
End If
End Sub
Avatar
Michel HOLDERITH
Salut,

essaies de remplacer :

test.xls par Windows("test.xls")

@+
Michel.
P.S.: J'ai teste chez moi ca marche.......


wrote in message
news:116701c3a929$ecb453a0$
J'ai légèrement modifié ton code qui ne fonctionne
toujours pas pourrais tu m'aider histoire d'améliorer tout
ça. Voici les modifs :

Sub feuille()
test.xls.Activate
Sheets.Select
testextra.xls.Activate
Sheets.Select
If test.xls.SelectedSheets.Count Then
If tetestextra.xls.SelectedSheets.Count Then
test.xls.Activate
For P = 1 To Sheets.Count
test.xls.Activate
On Error Resume Next
SheetsP.Select
testextra.xls.Activate
For P2 = 1 To Sheets.Count
SheetsP2.Select
If test.xls.ActiveSheet.Name testextra.xls.ActiveSheet.Name Then
BOUCLE = "OK"
GoTo YO
Else
BOUCLE = "PAS OK"
End If
Next P2
If BOUCLE = "PAS OK" Then
'SUPPRESSION feuille
Windowsfichier1.xls.Activate
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
End If
YO:
Next P
Else
Windowsfichier2.xls.Activate
For P3 = 1 To Sheets.Count
Windowsfichier2.xls.Activate
On Error Resume Next
SheetsP3.Select
Windowsfichier1.xls.Activate
For PP = 1 To Sheets.Count
SheetsPP.Select
If test.xls.ActiveSheet.Name testextra.xls.ActiveSheet.Name Then
BOUCLE = "OK"
GoTo ZO
Else
BOUCLE = "PAS OK"
End If
Next PP
If BOUCLE = "PAS OK" Then
'CREATION feuille
Sheets.Add
If test.xls.ActiveSheet.Name testextra.xls.ActiveSheet.Name Then

End If
ZO:
Next P3
End If
End Sub
Avatar
Avatar
Ca foire au niveau du new P3 à la fin ... donc même en
changeant le nom du fichier je pense pas que ça fonctionne
mieux.
@+ Eric
Avatar
Michel HOLDERITH
re,
c'est quoi ca :

Sheets.Add
If test.xls.ActiveSheet.Name testextra.xls.ActiveSheet.Name Then

moi j'ai ecris ca :

Sheets.Add
Windows("fichier1.xls").ActiveSheet.Name Windows("fichier2.xls").ActiveSheet.Name

Normal que ca ne marche plus si tu changes tout........... lol :o)

ton changement ne veut rien dire...... desole....
@+
Michel.

wrote in message
news:232801c3a930$15305800$
Ca foire au niveau du new P3 à la fin ... donc même en
changeant le nom du fichier je pense pas que ça fonctionne
mieux.
@+ Eric
Avatar
Michel HOLDERITH
Je rigoles... mais bon.....
franchement essayes de creer 2 fichiers vierges.
tu les sauves l'un "fichier1.xls" et l'autre "fichier2.xls"
laisses les ouvert, puis inseres mon code dans un module du fichier1.xls
apres amuses toi a creer ou supprimer des feuilles dans le fichier1.xls et
dans le fichier2.xls ou/et les deux en meme temps.
Il ne faut pas aller trop vite non plus.....
@+
Michel.
sinon donne l'exemple dans ma BAL.

wrote in message
news:232801c3a930$15305800$
Ca foire au niveau du new P3 à la fin ... donc même en
changeant le nom du fichier je pense pas que ça fonctionne
mieux.
@+ Eric