Exxel vba

Le
stormtroopertk1230 Hors ligne
Bonjour,

Ci-joint ma macro. J'aimerai rajouter la "Bonne" ligne de commande.
Je m'explique :
En principe, j'ai un fichier mensuel par personne (Nbre dheure par tache), j'ai donc créé la liste
maximale reprenant toutes les personnes aux coordonnées i = 12 à 39.
Mais il se peut que plusieurs personnes n'ont pas de fichier à remplir pour certains mois.
Une fois que les fichiers sont ouverts, je voudrai que la macro puisse dire ce fichier n'existe pas et continue de lire les autres.

Sub CopieDonnées()

Dim Chemin, Aire, NomFichier, NomceFichier, NoMois As String
Dim NoAnnee, NoMoisnum As Integer
Dim Wb As Workbook

For i = 12 To 39

NoAnnee = Sheets("Menu").Cells(9, 3).Value
NoMois = Sheets("Menu").Cells(10, 3).Value
NoMoisnum = Sheets("Menu").Cells(10, 4).Value
NomceFichier = Sheets("Menu").Cells(11, 3).Value
Aire = Sheets("Menu").Cells(i, 3).Value
NomFichier = "Feuille_de_temps" & Aire & NoMois & NoAnnee & ".xlsm"


Windows(NomFichier).Activate
Range("D60:H65").Select
Selection.Copy
Windows(NomceFichier).Activate
Sheets("Base" & NoMoisnum).Select
Application.Goto Reference:=Aire
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
Sheets("Base" & NoMoisnum).Calculate
Next
Sheets("Menu").Select
MsgBox " Copie des données effectuée " & Environ("username"), vbInformation + vbOKOnly, " Message "
End Sub

Je pensais à rajouter cette ligne de commande avant la ligne "Windows(NomFichier).Activate"
ci-jointe mais cela ne fonctionne pas correctement car la macro renvoi que le fichier n'existe pas alors qu'il existe bien et lorsque le fichier n'existe pas la macro s'arrête.
If Dir(NomFichier) <> "" Then
Else
MsgBox "Ce fichier """ & NomFichier & """ n'existe pas """
End If

Merci de voter aide.
Chris.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #24200591
Bonjour,

Je suppose que si un usager n'a pas de fichier à remplir, il doit y avoir une ou des variables
qui doivent demeurer vides...Il s'agit alors de tester ces variables et faire en sorte que si ces
variables ne sont pas vides alors la procédure s'applique.

Dans la procédure suivante, j'ai choisi la variable :
If NomFichier <> "Feuille_de_temps.xlsm" Then
mais cela pourrait être tout autre... je n'ai pas vu ton application.


'-------------------------------------------------
Sub CopieDonnées()

Dim Chemin, Aire, NomFichier, NomceFichier, NoMois As String
Dim NoAnnee, NoMoisnum As Integer
Dim Wb As Workbook

For i = 12 To 39

NoAnnee = Sheets("Menu").Cells(9, 3).Value
NoMois = Sheets("Menu").Cells(10, 3).Value
NoMoisnum = Sheets("Menu").Cells(10, 4).Value
NomceFichier = Sheets("Menu").Cells(11, 3).Value
Aire = Sheets("Menu").Cells(i, 3).Value
NomFichier = "Feuille_de_temps" & Aire & NoMois & NoAnnee & ".xlsm"

If NomFichier <> "Feuille_de_temps.xlsm" Then
Windows(NomFichier).Activate
Range("D60:H65").Select
Selection.Copy
Windows(NomceFichier).Activate
Sheets("Base" & NoMoisnum).Select
Application.Goto Reference:=Aire
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
Sheets("Base" & NoMoisnum).Calculate
End If
Next
Sheets("Menu").Select
MsgBox " Copie des données effectuée " & Environ("username"), _
vbInformation + vbOKOnly, " Message "
End Sub
'-------------------------------------------------



MichD
------------------------------------------
"stormtroopertk1230" a écrit dans le message de groupe de discussion :

Bonjour,

Ci-joint ma macro. J'aimerai rajouter la "Bonne" ligne de commande.
Je m'explique :
En principe, j'ai un fichier mensuel par personne (Nbre dheure par tache), j'ai
donc créé la liste
maximale reprenant toutes les personnes aux coordonnées i = 12 à 39.
Mais il se peut que plusieurs personnes n'ont pas de fichier à remplir pour
certains mois.
Une fois que les fichiers sont ouverts, je voudrai que la macro puisse dire ce
fichier n'existe pas et continue de lire les autres.

Sub CopieDonnées()

Dim Chemin, Aire, NomFichier, NomceFichier, NoMois As String
Dim NoAnnee, NoMoisnum As Integer
Dim Wb As Workbook

For i = 12 To 39

NoAnnee = Sheets("Menu").Cells(9, 3).Value
NoMois = Sheets("Menu").Cells(10, 3).Value
NoMoisnum = Sheets("Menu").Cells(10, 4).Value
NomceFichier = Sheets("Menu").Cells(11, 3).Value
Aire = Sheets("Menu").Cells(i, 3).Value
NomFichier = "Feuille_de_temps" & Aire & NoMois & NoAnnee & ".xlsm"


Windows(NomFichier).Activate
Range("D60:H65").Select
Selection.Copy
Windows(NomceFichier).Activate
Sheets("Base" & NoMoisnum).Select
Application.Goto Reference:=Aire
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
Sheets("Base" & NoMoisnum).Calculate
Next
Sheets("Menu").Select
MsgBox " Copie des données effectuée " & Environ("username"), vbInformation +
vbOKOnly, " Message "
End Sub

Je pensais à rajouter cette ligne de commande avant la ligne
"Windows(NomFichier).Activate"
ci-jointe mais cela ne fonctionne pas correctement car la macro renvoi que le
fichier n'existe pas alors qu'il existe bien et lorsque le fichier n'existe pas
la macro s'arrête.
If Dir(NomFichier) <> "" Then
Else
MsgBox "Ce fichier """ & NomFichier & """ n'existe pas """
End If

Merci de voter aide.
Chris.
h2so4
Le #24201791
bonsoir,

Peut-être n'as-tu pas mis correctement ton test ?

essaie avec le code modifié ci-dessous.


Sub CopieDonnées()

Dim Chemin, Aire, NomFichier, NomceFichier, NoMois As String
Dim NoAnnee, NoMoisnum As Integer
Dim Wb As Workbook

For i = 12 To 39

NoAnnee = Sheets("Menu").Cells(9, 3).Value
NoMois = Sheets("Menu").Cells(10, 3).Value
NoMoisnum = Sheets("Menu").Cells(10, 4).Value
NomceFichier = Sheets("Menu").Cells(11, 3).Value
Aire = Sheets("Menu").Cells(i, 3).Value
NomFichier = "Feuille_de_temps" & Aire & NoMois & NoAnnee & ".xlsm"
If Dir(NomFichier) <> "" Then

Windows(NomFichier).Activate
Range("D60:H65").Select
Selection.Copy
Windows(NomceFichier).Activate
Sheets("Base" & NoMoisnum).Select
Application.Goto Reference:=Aire
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBla nks _
:úlse, Transpose:úlse
Sheets("Base" & NoMoisnum).Calculate
End If
Next
Sheets("Menu").Select
MsgBox " Copie des données effectuée " & Environ("username"), vbInforma tion + _
vbOKOnly, " Message "
End Sub
Publicité
Poster une réponse
Anonyme