problème de macro pour transfert sur 2 autres classeurs

francis79

XLDnaute Junior
bonsoir à tous

en effet, avec le 1er fichier " copie jours effectués....." où tout est sur
le même classeur le transfert fonctionne bien.

par contre sur le 2ième fichier " jours effectués..." où j'ai 3 classeurs,
il y a 2 problèmes:

1) erreur de code, voir ci dessous en gras
malgré plusieurs essais avec l'enregistreur

2) pour les jours effectués sur la période juillet 2008 / décembre 2008 et période juillet 2009 / décembre 2009 , il n'y a pas de transfert avec message d'erreur "fichier janvier 2008 ou fichier juillet 2009 non trouvé"qui correspond au extrème des tableaux
contrairement au 1er fichier

Code:
'flag = False
[B]Workbooks(classeur2).Close True
Workbooks(classeur3).Close True[/B]
Application.ScreenUpdating = True
Exit Sub
erreur1:
Call MsgBox("Fichier : " & classeur2 _
            & vbCrLf & "non trouvé" _
            , vbExclamation, Application.Name)
Application.ScreenUpdating = True
Exit Sub
erreur2:
Call MsgBox("Fichier : " & classeur3 _
            & vbCrLf & "non trouvé" _
            , vbExclamation, Application.Name)

Workbooks(classeur2).Close False
Application.ScreenUpdating = True
Exit Sub
End Sub

ci joint les 2 fichiers

quelqu'un pourrait-il m'aider à résoudre ces 2 problèmes

merci d'avance
francis
 

Pièces jointes

  • jours effectués....zip
    38 KB · Affichages: 21
  • Copie de Jours effectués.....zip
    27.7 KB · Affichages: 20

skoobi

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

Bonjour francis79,

pour comprendre ce qui ce passe lorsque la macro s'exécute (et donc savoir pourquoi il y a un message d'erreur) place un point d'arrêt dans la marge du code (un bouton rouge doit apparaître) puis poursuit en "pas à pas" touche F8 et observe la valeur que prennent les variables, les conditions qui sont remplis ou non, etc...
Parfois, entre ce que l'on veut faire et ce qui se produit en réalité...

Bonne soirée.
 

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

bonsoir, Skooby,

j'ai marqué d'un rouge et ensuite F8, rien ne s'est produit

j'avais une erreur d'exécution 13

pour te rendre compte de l'erreur

ouvre le fichier "jour effectué"

prendre la feuille "jours effectués janvier à décembre"

mettre par exemple une date en avril 2009 dans les 2 colonnes jaunes
c'est à ce moment là, que j'ai l'erreur 13 (c'est la 1ère erreur)

et ensuite essaie de mettre une date en août 2008 -impossible d'ouvrir le fichier (c'est la 2ième erreur)

francis
 

skoobi

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

Bonjour,

Je n'ai pas les mêmes erreur que toi!
Bon, visiblement, tu veux que le code s'exécute uniquement lorsque la colonne G est renseignée mais actuellement dans ton code si tu renseigne la colonne E, la condition n'est pas remplie et donc les variable classeur1 et classeur2 sont vides donc plantage pour:
Code:
Workbooks(classeur2).Close True
Workbooks(classeur3).Close True
Pour résoudre celà, ajoute ceci:

Code:
[COLOR=Blue][B]Else: Exit Sub[/B][/COLOR]
End If
'flag = False
Workbooks(classeur2).Close True
Workbooks(classeur3).Close True
Pour ce qui est d'une date en 2008, ça fonctionne dans le sens où effectivement le fichier "janvier2008.xls" n'existe pas.
 

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

bonsoir à tous

je reviens pour mon problème de code qui fonctionne quà moitié

en effet lorsque je renseigne les colonnes E et G le résultat en I est envoyé
automatiquement sur classeurs juillet2008 et janvier2009
et ce pour des dates comprises entre janvier 2009 et juin 2009

par contre pour des dates entre juillet 2008 et décembre 2008
et juillet 2009 et décembre 2009

j'ai une erreur fichier non trouvé

je joint le fichier

quelqu'un peut-il résoudre mon problème, sachant que je ne comprend rien
dans le langage des codes

merci de votre aide

francis
 

Pièces jointes

  • jours effectués.3 classeurs.zip
    37.4 KB · Affichages: 18
  • jours effectués.3 classeurs.zip
    37.4 KB · Affichages: 19
  • jours effectués.3 classeurs.zip
    37.4 KB · Affichages: 21

skoobi

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

Bonsoir francis79,

quelqu'un peut-il résoudre mon problème, sachant que je ne comprend rien
dans le langage des codes
.
Quand je vois la longueur du code et vu ton niveau, tu t'engages sur un terrain glissant...
Et là je n'ai pas le temps d'analyser le code en entier pour t'aider, désolé.
Une chose que je ne comprends pas. En effet, janvier 2009 se trouve à la fois dans le fichier "juillet2008" et "janvier2009".
Donc comment choisis-tu le fichier pour y mettre "le nombre de jours"?
 

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

bonsoir à tous, bonsoir skoobi,

effectivement pour des dates entre janvier et juin 2009, le résultat est envoyer sur les 2 casseurs
c'est seulement pour les périodes avant et après où il y a un problème

alors que sur le fichier où il y a les 3 feuilles, tout fonctionne bien ( fichier joint)

PS: les codes ont été envoyé par jp14 pour les 2 fichiers, celui qui est en pièce jointe et celui du message précédent

merci de ton aide

francis
 

Pièces jointes

  • Jours effectués..1 classeur.zip
    27.7 KB · Affichages: 18
  • Jours effectués..1 classeur.zip
    27.7 KB · Affichages: 18
  • Jours effectués..1 classeur.zip
    27.7 KB · Affichages: 19

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

bonjour à tous,

quelqu'un peut-il m'aider à résoudre mon problème de code concernant
le fichier avec 3 classeurs " nom du fichier : jours effectués 3 classeurs"
lorsque je renseigne les colonnes E et G, le résultat en I est envoyé sur les classeurs juillet à juin et janvier à décembre
seulement le résultat est envoyé que pour des dates comprises entre janvier 2009 e t juin 2009
pour des dates avant et après, les fichiers ne sont pas trouvés

alors, qu'avec le fichier " jours effectués" où j'ai les 3 tableaux sur le même
classeurs tout fonctionne bien

merci, en attente de votre aide
francis
 

Pièces jointes

  • Jours effectués.zip
    15.8 KB · Affichages: 20
  • jours effectués.3 classeurs.zip
    35.6 KB · Affichages: 23
  • Jours effectués.zip
    15.8 KB · Affichages: 18
  • jours effectués.3 classeurs.zip
    35.6 KB · Affichages: 25
  • Jours effectués.zip
    15.8 KB · Affichages: 19
  • jours effectués.3 classeurs.zip
    35.6 KB · Affichages: 25

skoobi

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

Bonsoir francis79,

avec le fichier " jours effectués" où j'ai les 3 tableaux sur le même
classeurs tout fonctionne bien
C'est normal car dans le nom des onglets ne figure pas l'année donc la feuille est toujours trouvée.
seulement le résultat est envoyé que pour des dates comprises entre janvier 2009 e t juin 2009
pour des dates avant et après, les fichiers ne sont pas trouvés
Et bien il suffit simplement de créer les fichiers pour les dates avant janvier 2009 et après juin 2009 non?
Ce que fait le code actuellement:
Code:
    mois = Month(Target.Value)
[COLOR=Blue][B]'Si le mois est avant juillet[/B][/COLOR]
    If mois < 7 Then  ' ouverture année -1
[COLOR=Blue][B]'Classeur2 = juillet de l'année d'avant[/B][/COLOR]
      classeur2 = "juillet" & anneen - 1 & ".xls"
    Else
[COLOR=Blue][B]'sinon classeur2 = juillet de l'année[/B][/COLOR] [COLOR=Blue][B]de la date[/B][/COLOR] [COLOR=Blue][B]renseignée en colonne G[/B][/COLOR]
      classeur2 = "juillet" & anneen & ".xls"
    End If[COLOR=Red][B]
'ET classeur3 = janvier de l'année[/B][/COLOR] [B][COLOR=Red]de la date[/COLOR][/B] [B][COLOR=Red]renseignée en colonne G[/COLOR][/B]
    classeur3 = "janvier" & anneen & ".xls"
En colonne G:
Exemple1: 01/04/2009
Classeur2 = "juillet2008" car mois < 7
Classeur3 = "janvier2009"

Exemple2: 07/08/2008
Classeur2 = "juillet2008" car mois > 8
Classeur3 = "janvier2008"

En fait, Classeur3 sera toujours "janvier de l'année de la date" renseignée en colonne G.

Donc il manque le fichier "janvier2008".
CQFD.
 
Dernière édition:

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

bonsoir skooby,

j'avais déjà essayé en modifiant le non du fichier,ce qui m'obligerais avoir 4 fichiers, alors qu'il me faut seulement 2 fichiers, 1 pour l'année civile et l'autre de juillet à juin.

alors que sur le fichier joint au message précédent "jours effec" ça marche avec les 3 feuilles

pourquoi ça marche avec le fichier 3feuilles et non sur le fichier à 3 classeurs

francis
 

skoobi

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

bonsoir skooby,

pourquoi ça marche avec le fichier 3feuilles et non sur le fichier à 3 classeurs

francis

La partie du code dont je t'ai parlé n'est pas la bonne approche à mon avis.
Je suis partie du principe que les 2 fichiers calendriers auront toujours comme nom:
"Juillet de l'année précédente"
"Janvier de l'année en cours".
Ci-joint le fichier "Jours effectués 1 feuille" avec les modifications suivantes (ajout en bleu, j'ai mis en rouge "commenté" l'ancien code):

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim data1 As String
  Dim cellule As Range
  Dim col As String
  Dim moisa As String
  Dim annee As String
  Dim mois As Byte
  Dim lig As Long
  Dim dl1 As Long  ' dernière ligne
  Dim anneen As Integer
[COLOR=Blue][B]  Dim AnActuel As Integer[/B][/COLOR]
  chemin = ThisWorkbook.Path & "\"
  classeur1 = ActiveWorkbook.Name
  Application.ScreenUpdating = False  'gele l'ecran

  If flag = True Then Exit Sub
  If Target.Count > 1 Then Exit Sub
  dl1 = Workbooks(classeur1).Sheets(Target.Worksheet.Name).Range("G65536").End(xlUp).Row
  If Not Intersect(Target, Range("G11:g" & dl1)) Is Nothing Then
    If Not IsDate(Target.Value) Then Exit Sub
    ' ouvrir le fichier
[B][COLOR=Blue]    AnActuel = Year(Date)[/COLOR][/B]
    anneen = Year(Target.Value)
    mois = Month(Target.Value)
[B][COLOR=Red]    '    If mois < 7 Then ' ouverture année -1
    '        classeur2 = "juillet" & anneen - 1 & ".xls"
    '    Else
    '        classeur2 = "juillet" & anneen & ".xls"
    '    End If
    '    classeur3 = "janvier" & anneen & ".xls"[/COLOR][/B]
    'si la date est < au 01/07 de l'année dernière en stop la macro
[B][COLOR=Blue]    If Target.Value < DateSerial(AnActuel - 1, 7, 1) Then Exit Sub
    classeur2 = "juillet" & AnActuel - 1 & ".xls"
    classeur3 = "janvier" & AnActuel & ".xls"[/COLOR][/B]
    On Error GoTo erreur1
    Workbooks.Open Filename:=chemin & classeur2
    On Error GoTo erreur2
    Workbooks.Open Filename:=chemin & classeur3
.....
.........

Edit: Après quelques essais les fichiers sont bien trouvés dans tout les cas de figure mais les mois ne sont pas toujours trouvés dans les fichiers juillet et janvier. Regarde avec jp14 car c'est lui qui a créé la fonction recherchedate.
 

Pièces jointes

  • Jours effectués 1 feuille.zip
    22.5 KB · Affichages: 28
Dernière édition:

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

rebonsoir skooby

j'ai renommer les 2 autre fichiers et j'ai toujours les même problèmes

serait-il possible que tu puisse envoyer les 3 fichiers pour voir si j'ai le problème

merci
francis
 

francis79

XLDnaute Junior
Re : problème de macro pour transfert sur 2 autres classeurs

re,
effectivement avec les bons fichiers, j'ai l'erreur "mois non trouvé" mais aucun résultat n'est envoyé, pour des dates 2008

par contre pour des dates après juin 2009 à décembre 2009 ,j'ai une erreur
d'éxécution mais les résultat sont envoyés

francis
 

jp14

XLDnaute Barbatruc
Re : problème de macro pour transfert sur 2 autres classeurs

Bonjour

Ci joint le fichier avec des corrections.
Pour que la procédure fonctionne il faut que les fichiers soient présents dans le répertoire actif

Le nom des fichiers à ouvrir est déterminé par le code
Code:
    ' ouvrir le fichier
    anneen = Year(Target.Value) ' annee de la date saisie par exemple 2009
    mois = Month(Target.Value) ' mois de la date saisie
    If mois < 7 Then ' ouverture année -1 ' si lle mois est inférieur à 7 le 
'fichier ouvert porte le nom de juillet2008 ( la "feuil1" contient les données des mois de juillet 2008 à juin 2009 )
        classeur2 = "juillet" & anneen - 1 & ".xls"
    Else
' nom fichier juillet2009
        classeur2 = "juillet" & anneen & ".xls"
    End If
' nom fichier janvier2009
classeur3 = "janvier" & anneen & ".xls"

A tester

JP
 

Pièces jointes

  • Copie de Jours effectués janvier à décembre.zip
    45.3 KB · Affichages: 25
  • Copie de Jours effectués janvier à décembre.zip
    45.3 KB · Affichages: 26
  • Copie de Jours effectués janvier à décembre.zip
    45.3 KB · Affichages: 28

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 896
Membres
101 833
dernier inscrit
sandra25