[VBA] Method Sheet.Copy
Résolu
LeDénicheur
Messages postés
565
Date d'inscription
Statut
Membre
Dernière intervention
-
LeDénicheur Messages postés 565 Date d'inscription Statut Membre Dernière intervention -
LeDénicheur Messages postés 565 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- [VBA] Method Sheet.Copy
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
7 réponses
Bonsoir,
Avec quelques recherches j'ai finalement réussi par trouver d'où venait le problème. Tout est relativement bien expliqué derrière ce lien :
https://www.developpez.net/forums/d1003446/logiciels/microsoft-office/excel/macros-vba-excel/pb-affichage-image-feuille-importe-relation-rid1/
En résumer, c'est un soucis de xml, il faut sauver le fichier modifié avant de fermer le fichier "source" d'ou viennent les feuilles copiées.
Néanmoins, j'ai désormais un autre soucis. Je vais créer un autre post.
Voici le lien de ma nouvelle question :
https://forums.commentcamarche.net/forum/affich-25431796-excel-vba-fermeture-classeur
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?
Avec quelques recherches j'ai finalement réussi par trouver d'où venait le problème. Tout est relativement bien expliqué derrière ce lien :
https://www.developpez.net/forums/d1003446/logiciels/microsoft-office/excel/macros-vba-excel/pb-affichage-image-feuille-importe-relation-rid1/
En résumer, c'est un soucis de xml, il faut sauver le fichier modifié avant de fermer le fichier "source" d'ou viennent les feuilles copiées.
Néanmoins, j'ai désormais un autre soucis. Je vais créer un autre post.
Voici le lien de ma nouvelle question :
https://forums.commentcamarche.net/forum/affich-25431796-excel-vba-fermeture-classeur
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?
Bonjour,
Quel code utilises tu?
Je viens de tester sous mon vieux 2003 et le code suivant fonctionne correctement, même pour des images :
Quel code utilises tu?
Je viens de tester sous mon vieux 2003 et le code suivant fonctionne correctement, même pour des images :
Sub copier() ActiveSheet.Copy Before:=Workbooks("destination.xls").Sheets("Feuil3") End Sub
Bonjour,
VBA sous office 2010 si c'est ça ta question ?
J'utilise exactement la même commande. C'est incompréhensible.
Lors que je le fais à la main cela fonctionne.
Lorsque le lance le code, avec plusieurs feuilles à copier, les images s'éffacent et sont remplacées par un carré blanc avec une croix rouge : "Impossible d'afficher l'image".
Il me semble que les images sont des objets shapes. Le problème peut venir de la manière dont on été importée les images ?
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?
VBA sous office 2010 si c'est ça ta question ?
J'utilise exactement la même commande. C'est incompréhensible.
Lors que je le fais à la main cela fonctionne.
Lorsque le lance le code, avec plusieurs feuilles à copier, les images s'éffacent et sont remplacées par un carré blanc avec une croix rouge : "Impossible d'afficher l'image".
Il me semble que les images sont des objets shapes. Le problème peut venir de la manière dont on été importée les images ?
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ces images sont peut être dans des contrôles Image ou autre... Effectivement cela peux bloquer.
Comment les intègres tu à ta feuille?
Sinon je te demandais ton code VBA...
Comment les intègres tu à ta feuille?
Sinon je te demandais ton code VBA...
Je les ai intégré une seule fois, via le menu de excel "Insérer image".
Je te fournis le code ce soir, mais ce n'est qu'une boucle avec une commande de type :
Workbooks().Sheets().Copy After:=Workbooks().Sheets() à l'intérieur de la boucle...donc bon.
Je te copie/colle le code aux alentours de 20h.
Je te fournis le code ce soir, mais ce n'est qu'une boucle avec une commande de type :
Workbooks().Sheets().Copy After:=Workbooks().Sheets() à l'intérieur de la boucle...donc bon.
Je te copie/colle le code aux alentours de 20h.
Voilà mon code :
Sub workbook_open()
recent_file = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error GoTo suite
With Application.FileDialog(msoFileDialogOpen)
.Title = "Mise à jour obligatoire, Veuillez selectionner votre ancien fichier de bons de commande"
.InitialFileName = ActiveWorkbook.Path
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsm"
.Show
old_file = .SelectedItems(1)
End With
Sheets("MAJ").Delete
Workbooks(recent_file).Sheets(1).Unprotect
Workbooks.Open "" & old_file & ""
old_file = Right(old_file, InStr(StrReverse(old_file), "\") - 1)
For i = 1 To Workbooks("" & old_file & "").Sheets.Count - 3
shee = StrReverse("" & Workbooks("" & old_file & "").Sheets(1 + i).Name & "")
num = StrReverse(Left(shee, InStr(1, shee, " ") - 1))
nam = StrReverse(Right(shee, Len(shee) - InStr(1, shee, " ")))
Workbooks(old_file).Sheets(1 + i).Copy Before:=Workbooks(recent_file).Sheets(i + 1)
Next
Workbooks(old_file).Close
Workbooks(recent_file).Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Workbooks(recent_file).Sheets(1).Select
MsgBox "Mise à jour effectuée !", vbInformation
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
suite:
MsgBox "Mise à jour annulée, veuillez contacter le support.", vbCritical
ActiveWorkbook.Close
End Sub
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?
Sub workbook_open()
recent_file = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error GoTo suite
With Application.FileDialog(msoFileDialogOpen)
.Title = "Mise à jour obligatoire, Veuillez selectionner votre ancien fichier de bons de commande"
.InitialFileName = ActiveWorkbook.Path
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsm"
.Show
old_file = .SelectedItems(1)
End With
Sheets("MAJ").Delete
Workbooks(recent_file).Sheets(1).Unprotect
Workbooks.Open "" & old_file & ""
old_file = Right(old_file, InStr(StrReverse(old_file), "\") - 1)
For i = 1 To Workbooks("" & old_file & "").Sheets.Count - 3
shee = StrReverse("" & Workbooks("" & old_file & "").Sheets(1 + i).Name & "")
num = StrReverse(Left(shee, InStr(1, shee, " ") - 1))
nam = StrReverse(Right(shee, Len(shee) - InStr(1, shee, " ")))
Workbooks(old_file).Sheets(1 + i).Copy Before:=Workbooks(recent_file).Sheets(i + 1)
Next
Workbooks(old_file).Close
Workbooks(recent_file).Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Workbooks(recent_file).Sheets(1).Select
MsgBox "Mise à jour effectuée !", vbInformation
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
suite:
MsgBox "Mise à jour annulée, veuillez contacter le support.", vbCritical
ActiveWorkbook.Close
End Sub
Prenez le temps de bien rédiger vos questions, et nous prendrons le temps d'y répondre......Timmy ?!?