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
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 .
Ca fonctionne nickel, j'ai juste ajouter Application.DisplayAlerts = False au debut afin qu'il ne m'embete pas si le fichier N+1 est deja ouvert et en fin de macro Application.DisplayAlerts = True
merci bien de ton implication, ca me depanne vraiment.
Bonne journée
Manu
"FFO" a écrit dans le message de news:
Rebonjour à toi
Mets comme ceci :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls" Classeur = ThisWorkbook.Name Chemin = "C:" & Sheets("données").Range("B1") + 1 & "" & 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
Celà devrait convenir
Dis moi !!!!
Ca fonctionne nickel, j'ai juste ajouter Application.DisplayAlerts =
False
au debut afin qu'il ne m'embete pas si le fichier N+1 est deja ouvert
et en fin de macro Application.DisplayAlerts = True
merci bien de ton implication, ca me depanne vraiment.
Bonne journée
Manu
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
20E07816-32BD-4BAA-8265-E784B7592CF6@microsoft.com...
Rebonjour à toi
Mets comme ceci :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls"
Classeur = ThisWorkbook.Name
Chemin = "C:" & Sheets("données").Range("B1") + 1 & "" & 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
Ca fonctionne nickel, j'ai juste ajouter Application.DisplayAlerts = False au debut afin qu'il ne m'embete pas si le fichier N+1 est deja ouvert et en fin de macro Application.DisplayAlerts = True
merci bien de ton implication, ca me depanne vraiment.
Bonne journée
Manu
"FFO" a écrit dans le message de news:
Rebonjour à toi
Mets comme ceci :
Fichier = "Toto " & Sheets("données").Range("B1") + 1 & ".xls" Classeur = ThisWorkbook.Name Chemin = "C:" & Sheets("données").Range("B1") + 1 & "" & 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
Celà devrait convenir
Dis moi !!!!
FFO
Rebonjour à toi
Heureux de t'avoir satisfait
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est déjà ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error Resume Next ni Application.DisplayAlerts = False) car il est inutile de surcharger le code de commande superflue
Tiens moi informé !!!!!
Rebonjour à toi
Heureux de t'avoir satisfait
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est déjà
ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error
Resume Next ni Application.DisplayAlerts = False) car il est inutile de
surcharger le code de commande superflue
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est déjà ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error Resume Next ni Application.DisplayAlerts = False) car il est inutile de surcharger le code de commande superflue
Tiens moi informé !!!!!
Modeste
Bonsour® FFO avec ferveur ;o))) vous nous disiez :
Si je retire les lignes que tu m'as dis, j'ai le message : toto 2010.xls est deja ouvert .... C'est genant.
"FFO" a écrit dans le message de news:
Rebonjour à toi
Heureux de t'avoir satisfait
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est déjà ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error Resume Next ni Application.DisplayAlerts = False) car il est inutile de surcharger le code de commande superflue
Tiens moi informé !!!!!
Si je retire les lignes que tu m'as dis, j'ai le message : toto 2010.xls est
deja ouvert ....
C'est genant.
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
10346A06-3AC1-48D1-AAD4-DCFC2E00E727@microsoft.com...
Rebonjour à toi
Heureux de t'avoir satisfait
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est
déjà
ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error
Resume Next ni Application.DisplayAlerts = False) car il est inutile de
surcharger le code de commande superflue
Si je retire les lignes que tu m'as dis, j'ai le message : toto 2010.xls est deja ouvert .... C'est genant.
"FFO" a écrit dans le message de news:
Rebonjour à toi
Heureux de t'avoir satisfait
Si le fichier est déjà ouvert j'avais mis la ligne :
On Error Resume Next
Pensant que celà suffisait pour ne pas générer de message d'erreur
Aprés essai en fait aucun message d'erreur n'apparait si le fichier est déjà ouvert même sans cette instruction
Réessaies de ton côté sans ligne d'instruction supplémentaire (ni On Error Resume Next ni Application.DisplayAlerts = False) car il est inutile de surcharger le code de commande superflue
Tiens moi informé !!!!!
FFO
Rebonjour à toi
Moi je ne l'ai pas
Donc maintiens ces lignes si pour toi ce n'est pas le cas
Il ne faut maintenir que ce qui est utile et nécessaire
Rebonjour à toi
Moi je ne l'ai pas
Donc maintiens ces lignes si pour toi ce n'est pas le cas
Il ne faut maintenir que ce qui est utile et nécessaire