coconutsn
Messages postés1Date d'inscriptionlundi 19 juillet 2010StatutMembreDernière intervention12 novembre 2010
-
12 nov. 2010 à 11:57
jordane45
Messages postés38139Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024
-
12 nov. 2010 à 12:52
Bonjour,
Merci à ceux qui me lisent.
J'ai un petit problème avec une macro VBA Excel (version 2000).
Dans une classeur Excel ("classeur1.xls"), j'ai réalisé une macro qui permet de créer une feuille, d'y mettre des informations puis d'enregistrer dans une autre classeur ("classeur2.xls"). Le code ne marche que de façon aléatoire. C'est à dire que tout fonctionne bien pendant un certain nombre de fois. Mais au bout de la n-ème fois (aléatoirement), et me sort le message d'erreur :
Erreur d'éxecution '1004' :
La méthode 'Range' de l'objet '_Global' a échoué
J'ai parcouru plusieurs forums mais n'ayant trouvé de solution, je me tourne vers vous.
Je vous mets une parti de mon code qui s'appelle "sauvegarde1". Acitée à partir du classeur1, elle a pour but d'ouvrir le classeur2 et d'y insérer des informations (copier/coller de cellules, et copie d'une feuille):
Sub sauvegarde1()
Source = ActiveWorkbook.Name
Année = UserForm2.Année
Chemin = ActiveWorkbook.Path
Dim NomChercher As String
Dim oFs As Variant
Dim NomFichier As String
Set oFs = Application.FileSearch
NomChercher = Année 'entrée dans une inputbox
With oFs
.LookIn = Chemin
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
NomFichier = .FoundFiles(i)
If Left(Right(NomFichier, 8), 4) = NomChercher Then
Application.EnableEvents = False
Workbooks.Open (NomFichier)
DEVERROUILLE 'sub qui déverrouille le classeur2 qui était vérrouillé
Application.EnableEvents = True
Destination = ActiveWorkbook.Name
Workbooks(Destination).Activate
Sheets("Opérations " & Année).Select
Workbooks(Source).Activate
Sheets("Aliment").Select
Range(Cells(1, 1), Cells(1, 77)).Copy
Workbooks(Destination).Activate
Sheets("Opérations " & Année).Select
Set celluletrouvee = Range("A:A").Find(UserForm2.NuméroAliment, LookIn:=xlValues) 'Cherche dans une cellule une variable entrée
If Not celluletrouvee Is Nothing Then
ligne = celluletrouvee.Row
Cells(ligne, 1).Select
ActiveSheet.Paste
Else
Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).Select
ActiveSheet.Paste
End If
Application.DisplayAlerts = False
If FeuilleExiste(ActiveWorkbook, "A" & UserForm1.TextBoxDO.Value) = True Then Sheets("A" & UserForm1.TextBoxDO.Value).Delete 'fonction pour rechercher si une feuille est présente
Workbooks(Source).Activate ' problème a lieu soit sur cette ligne là, soit sur la suivante
Sheets("A" & UserForm2.NuméroAliment).Copy after:=Workbooks( _
Destination).Sheets("Opérations " & Année)
End If
Workbooks(Destination).Activate
Sheets("Opérations " & Année).Select
A = ActiveSheet.UsedRange.Rows.Count
ActiveWorkbook.Names("Database").Delete 'on supprime l'ancien nom
Range(Cells(8, 1), Cells(A, 71)).Name = "Database"
Workbooks(Destination).Activate
VERROUILLE
Workbooks(Destination).Close savechanges:=True
End If
Next
End If
End With
End Sub
jordane45
Messages postés38139Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 avril 2024344 12 nov. 2010 à 12:51
Bonjour,
déjà, penses à utiliser les balises de codes lorsque tu postes sur le forum. (lorsque tu rédiges ton message.. c'est la 3 eme icone en partant de la droite dans la barre d'outil de la fenetre où tu écris).
Ensuite, peux tu nous dire sur quelle ligne ton programme ?
As-tu essayé de parcrourir ton code en mode pas à pas pour trouver d'où vient le souci ?
Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI