Bonjour à tous,
J'ai un soucis avec ma macro, j'arrive pas à boucler sur une erreur d'onglet.
Si tous mes fichiers ont bien l'onglet "etude" il me fait bien mes copies par contre j'aimerai gerer l'absence de cette onglet en copiant les données d'une autre feuille si celui-ci est absent. je souhaiterai qu'il utilise la feuille "garderie"
Pouvez-vous m'aider à faire cette gestion d'erreur ?
Merci d'avance à tout les contributeur
Sub Import()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String
Dim Colonne As Integer
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
'Si l'utilisateur annule sans choisir
If objFolder Is Nothing Then
'message
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else 'sinon
'Chemin = répertoire choisi
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
'Choix du 1er fichier
fichier = Dir(Chemin & "*.xls*")
'Colonne = n° de colonne ou on va coller les données
'pour commencer colonne A, laisser à 0, pour commencer colonne B remplacer 0 par 1 etc...
Colonne = 3
'on boucle sur tous les fichiers excel du répertoire choisi
' Application.ScreenUpdating = False
Do While Len(fichier) > 0
Colonne = Colonne + 1
If fichier <> ThisWorkbook.Name Then
'attribue un nom dans le classeur, se référant à la plage à importer : B2:I18
ThisWorkbook.Names.Add "Plage", RefersTo:="='" & Chemin & "[" & fichier & "]Etude'!$B$2:$q$44"
With Sheets("recup_etude")
' "Importe les données" grâce au nom donné ci-dessus
.[B2:Q44] = "=Plage"
'recup donnés général
.[C3:c7].Copy 'Copie C3'.[C3].Copy 'Copie C3
End With
With Sheets("synthese")
.Cells(3, Colonne).PasteSpecial xlPasteValues 'Colle c3
End With
End If
fichier = Dir()
Loop
End If
'Application.ScreenUpdating = tree
End Sub
J'ai un soucis avec ma macro, j'arrive pas à boucler sur une erreur d'onglet.
Si tous mes fichiers ont bien l'onglet "etude" il me fait bien mes copies par contre j'aimerai gerer l'absence de cette onglet en copiant les données d'une autre feuille si celui-ci est absent. je souhaiterai qu'il utilise la feuille "garderie"
Pouvez-vous m'aider à faire cette gestion d'erreur ?
Merci d'avance à tout les contributeur
Sub Import()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String
Dim Colonne As Integer
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
'Si l'utilisateur annule sans choisir
If objFolder Is Nothing Then
'message
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else 'sinon
'Chemin = répertoire choisi
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
'Choix du 1er fichier
fichier = Dir(Chemin & "*.xls*")
'Colonne = n° de colonne ou on va coller les données
'pour commencer colonne A, laisser à 0, pour commencer colonne B remplacer 0 par 1 etc...
Colonne = 3
'on boucle sur tous les fichiers excel du répertoire choisi
' Application.ScreenUpdating = False
Do While Len(fichier) > 0
Colonne = Colonne + 1
If fichier <> ThisWorkbook.Name Then
'attribue un nom dans le classeur, se référant à la plage à importer : B2:I18
ThisWorkbook.Names.Add "Plage", RefersTo:="='" & Chemin & "[" & fichier & "]Etude'!$B$2:$q$44"
With Sheets("recup_etude")
' "Importe les données" grâce au nom donné ci-dessus
.[B2:Q44] = "=Plage"
'recup donnés général
.[C3:c7].Copy 'Copie C3'.[C3].Copy 'Copie C3
End With
With Sheets("synthese")
.Cells(3, Colonne).PasteSpecial xlPasteValues 'Colle c3
End With
End If
fichier = Dir()
Loop
End If
'Application.ScreenUpdating = tree
End Sub