Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom
et qu'il me le colle dans la colonne E en face du nom correspondant etc...
pour tous les cellules de D7 à D1000 et que si un nom n'est plus commun au
2 fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom
et qu'il me le colle dans la colonne E en face du nom correspondant etc...
pour tous les cellules de D7 à D1000 et que si un nom n'est plus commun au
2 fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom
et qu'il me le colle dans la colonne E en face du nom correspondant etc...
pour tous les cellules de D7 à D1000 et que si un nom n'est plus commun au
2 fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la feuil
données et dans chaque autre feuil j'ai fais une liaison =Données!A5 etc
ainsi je suis sur que dans chaque col A de chaque feuil, j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas toujours
trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une grosse
boulette dans la mesure ou je copie une plage d'un fichier à un autre mais
que ces donnés ne correspondent plus au nom qu'il y a dans la colonne A car
les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom et
qu'il me le colle dans la colonne E en face du nom correspondant etc... pour
tous les cellules de D7 à D1000 et que si un nom n'est plus commun au 2
fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la feuil
données et dans chaque autre feuil j'ai fais une liaison =Données!A5 etc
ainsi je suis sur que dans chaque col A de chaque feuil, j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas toujours
trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une grosse
boulette dans la mesure ou je copie une plage d'un fichier à un autre mais
que ces donnés ne correspondent plus au nom qu'il y a dans la colonne A car
les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom et
qu'il me le colle dans la colonne E en face du nom correspondant etc... pour
tous les cellules de D7 à D1000 et que si un nom n'est plus commun au 2
fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher d'etre
clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la feuil
données et dans chaque autre feuil j'ai fais une liaison =Données!A5 etc
ainsi je suis sur que dans chaque col A de chaque feuil, j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais ne
sont pas toujours les memes d'une année à une autre et ne sont pas toujours
trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7 à
D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie cette
plage dans la colonne E du fichier toto N+1 c'est à dire toto 2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une grosse
boulette dans la mesure ou je copie une plage d'un fichier à un autre mais
que ces donnés ne correspondent plus au nom qu'il y a dans la colonne A car
les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la feuil
decembre et de coller dans la colonne E du fichier toto N+1 en faisant
attention au nom qu'il y a dans la colonne A, si le noms existe sur les 2
fichiers, alors qu'il me recherche dans le fichier N+1 ou se trouve le nom et
qu'il me le colle dans la colonne E en face du nom correspondant etc... pour
tous les cellules de D7 à D1000 et que si un nom n'est plus commun au 2
fichier alors qu'il ne fasse rien et que si un nom existe en toto N+1 et
qu'il n'existatis pas en N-1 alors qu'il ne fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour.
Tu n'as besoin de bouton, mets la macro suivante dans le module
"ThisWorkbook" de chaque fichier :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
If Sh.Name = "Données" Then Exit Sub
If Intersect(Target, Range(Sh.[D7], Sh.[D65000].End(xlUp))) Is Nothing
Then Exit Sub
If Target.Count > 1 Then Exit Sub
Set Sh = ActiveSheet
Workbooks.Open ThisWorkbook.Path & "toto " & [Données!B1] + 1 & ".xls"
Application.EnableEvents = False
Sh.[D7:D1000].Copy ActiveWorkbook.Sheets(Sh.Name).[E7]
Application.EnableEvents = True
ActiveWorkbook.Close True
End Sub
DanielBonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher
d'etre clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais
ne sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7
à D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie
cette plage dans la colonne E du fichier toto N+1 c'est à dire toto
2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la
feuil decembre et de coller dans la colonne E du fichier toto N+1 en
faisant attention au nom qu'il y a dans la colonne A, si le noms existe
sur les 2 fichiers, alors qu'il me recherche dans le fichier N+1 ou se
trouve le nom et qu'il me le colle dans la colonne E en face du nom
correspondant etc... pour tous les cellules de D7 à D1000 et que si un
nom n'est plus commun au 2 fichier alors qu'il ne fasse rien et que si un
nom existe en toto N+1 et qu'il n'existatis pas en N-1 alors qu'il ne
fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour.
Tu n'as besoin de bouton, mets la macro suivante dans le module
"ThisWorkbook" de chaque fichier :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
If Sh.Name = "Données" Then Exit Sub
If Intersect(Target, Range(Sh.[D7], Sh.[D65000].End(xlUp))) Is Nothing
Then Exit Sub
If Target.Count > 1 Then Exit Sub
Set Sh = ActiveSheet
Workbooks.Open ThisWorkbook.Path & "toto " & [Données!B1] + 1 & ".xls"
Application.EnableEvents = False
Sh.[D7:D1000].Copy ActiveWorkbook.Sheets(Sh.Name).[E7]
Application.EnableEvents = True
ActiveWorkbook.Close True
End Sub
Daniel
Bonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher
d'etre clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais
ne sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7
à D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie
cette plage dans la colonne E du fichier toto N+1 c'est à dire toto
2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la
feuil decembre et de coller dans la colonne E du fichier toto N+1 en
faisant attention au nom qu'il y a dans la colonne A, si le noms existe
sur les 2 fichiers, alors qu'il me recherche dans le fichier N+1 ou se
trouve le nom et qu'il me le colle dans la colonne E en face du nom
correspondant etc... pour tous les cellules de D7 à D1000 et que si un
nom n'est plus commun au 2 fichier alors qu'il ne fasse rien et que si un
nom existe en toto N+1 et qu'il n'existatis pas en N-1 alors qu'il ne
fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Bonjour.
Tu n'as besoin de bouton, mets la macro suivante dans le module
"ThisWorkbook" de chaque fichier :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
If Sh.Name = "Données" Then Exit Sub
If Intersect(Target, Range(Sh.[D7], Sh.[D65000].End(xlUp))) Is Nothing
Then Exit Sub
If Target.Count > 1 Then Exit Sub
Set Sh = ActiveSheet
Workbooks.Open ThisWorkbook.Path & "toto " & [Données!B1] + 1 & ".xls"
Application.EnableEvents = False
Sh.[D7:D1000].Copy ActiveWorkbook.Sheets(Sh.Name).[E7]
Application.EnableEvents = True
ActiveWorkbook.Close True
End Sub
DanielBonjour,
Je n'arrive pas du tout à m'en sortir. Pas facile... je vais tacher
d'etre clair
J'ai des fichiers nommé : toto 2008.xls ; toto 2009.xls ; toto 2010.xls ;
toto 2011.xls .....
j'ai 13 feuil données ; janvier ; fevrier .. jusqu'a decembre
dans toutes les feuil j'ai en colonne A des noms, ils sont tapé dans la
feuil données et dans chaque autre feuil j'ai fais une liaison
=Données!A5 etc ainsi je suis sur que dans chaque col A de chaque feuil,
j'ai les memes noms
Les fichiers ne sont pas toujours totalement identique,
les feuils sont toujours les memes mais en colonne A j'ai des noms mais
ne sont pas toujours les memes d'une année à une autre et ne sont pas
toujours trier de la meme facon.
Je souhaiterai créer un bouton que lorsque je fais des changements de D7
à D1000 de la feuil decembre du fichier toto 2008.xls, qu'il me copie
cette plage dans la colonne E du fichier toto N+1 c'est à dire toto
2009.xls
ca, j'y arrivais avec cela :
Sub miseajour_N_Nplus1()
Dim NomFic As String, Chemin As String, Annéesuivante As String
Calculate
Sheets("decembre").Select
Range("D7:D1000").Select
Selection.Copy
Sheets("données").Select
Annéesuivante = Range("B1") + 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
Sheets("Données").Select
Range("e4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("e4").Select
Calculate
Sheets("données").Select
Range("e4").Select
Annéesuivante = Range("B1") - 1
NomFic = "toto" & Annéesuivante & ".xls"
Chemin = "C:" & Annéesuivante & ""
Workbooks(NomFic).Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Mais evidemment comme je le stipulais au dessus, cette macro est une
grosse boulette dans la mesure ou je copie une plage d'un fichier à un
autre mais que ces donnés ne correspondent plus au nom qu'il y a dans la
colonne A car les noms changent d'une année à l'autre.
Alors, est t'il possible de copier les cellules de D7 à D1000 de la
feuil decembre et de coller dans la colonne E du fichier toto N+1 en
faisant attention au nom qu'il y a dans la colonne A, si le noms existe
sur les 2 fichiers, alors qu'il me recherche dans le fichier N+1 ou se
trouve le nom et qu'il me le colle dans la colonne E en face du nom
correspondant etc... pour tous les cellules de D7 à D1000 et que si un
nom n'est plus commun au 2 fichier alors qu'il ne fasse rien et que si un
nom existe en toto N+1 et qu'il n'existatis pas en N-1 alors qu'il ne
fasse rien non plus.
Vraiment pas facile... J'ai été clair ??? j'espere .
merci du coup de main, j'en ais vraiment besoin.
Manu
Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet "données"
Donnes moi des nouvelles !!!!!!
Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet "données"
Donnes moi des nouvelles !!!!!!
Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet "données"
Donnes moi des nouvelles !!!!!!
Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" a écrit dans le message de news:Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
F253BCB7-1CE4-42ED-9124-029D42789332@microsoft.com...
Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" a écrit dans le message de news:Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Super, j'ai fais divers tests et pour l'instant tout fonctionne, merci
encore FFo ainsi qu'à daniel.
Manu
"Manu" a écrit dans le message de news:
ez$Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" a écrit dans le message de news:Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être
ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Super, j'ai fais divers tests et pour l'instant tout fonctionne, merci
encore FFo ainsi qu'à daniel.
Manu
"Manu" <manuel.gamin@wanadoo.fr> a écrit dans le message de news:
ez$tB2jrKHA.1800@TK2MSFTNGP02.phx.gbl...
Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
F253BCB7-1CE4-42ED-9124-029D42789332@microsoft.com...
Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être
ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Super, j'ai fais divers tests et pour l'instant tout fonctionne, merci
encore FFo ainsi qu'à daniel.
Manu
"Manu" a écrit dans le message de news:
ez$Ca à l'air de fonctionner FFO, je vais desormais l'installer dans le
fichier d'origine, et je te tiens au courant.
Je m'attendais pour faire ca à des tonnes de lignes, c'est fou ce qui est
possible de faire en VBA, il faut vraiment que je m'y mette.
Merci, et je te tiens au courant.
Manu
"FFO" a écrit dans le message de news:Salut à toi
Utilises ces lignes de code :
Sheets("decembre").Activate
i = 7
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
ces 3 lignes doivent être mises bout à bout sur une seule :
Ligne >>> Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A"
&
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
ton fichier de destination "Toto et année suivante .xls" doit être
ouvert
l'onglet de destination doit être nommé "données"
Mets ce code dans le fichier source
Exécutes le à partir de l'onglet "decembre"
Va constater le résultat colonne E Fichier de destination onglet
"données"
Donnes moi des nouvelles !!!!!!
Rebonjour à toi
Si ton fichier n'est pas ouvert rajoutes ces quelques lignes :
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
J'ai supposé que le classeur à ouvrir est dans le même répertoire que
celui
du code
Sinon adaptes :
Chemin = ThisWorkbook.Path & "" & Fichier
ainsi :
Chemin = "C:Chemin" & Fichier
du chemin de du répertoire du fichier à ouvrir
Ce qui donne le code global :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
Sheets("decembre").Activate
i = 7
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
Je pense que celà devrait convenir
Dit moi !!!!!!
Rebonjour à toi
Si ton fichier n'est pas ouvert rajoutes ces quelques lignes :
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
J'ai supposé que le classeur à ouvrir est dans le même répertoire que
celui
du code
Sinon adaptes :
Chemin = ThisWorkbook.Path & "" & Fichier
ainsi :
Chemin = "C:Chemin" & Fichier
du chemin de du répertoire du fichier à ouvrir
Ce qui donne le code global :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
Sheets("decembre").Activate
i = 7
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
Je pense que celà devrait convenir
Dit moi !!!!!!
Rebonjour à toi
Si ton fichier n'est pas ouvert rajoutes ces quelques lignes :
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
J'ai supposé que le classeur à ouvrir est dans le même répertoire que
celui
du code
Sinon adaptes :
Chemin = ThisWorkbook.Path & "" & Fichier
ainsi :
Chemin = "C:Chemin" & Fichier
du chemin de du répertoire du fichier à ouvrir
Ce qui donne le code global :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Classeur = ThisWorkbook.Name
Chemin = ThisWorkbook.Path & "" & Fichier
On Error Resume Next
Workbooks.Open (Chemin)
Workbooks(Classeur).Activate
Sheets("decembre").Activate
i = 7
Do While i < Range("A65535").End(xlUp).Row + 1
Ligne = 0
On Error Resume Next
Ligne > Workbooks(Fichier).Sheets("données").Columns("A:A").Find(What:=Range("A" &
i), After:=Workbooks(Fichier).Sheets("données").Range("A6"),
LookIn:=xlValues, Lookat:=xlWhole).Row
If Ligne > 0 Then
Workbooks(Fichier).Sheets("données").Range("E" & Ligne) = Range("D" & i)
End If
i = i + 1
Loop
Je pense que celà devrait convenir
Dit moi !!!!!!