[VBA] Method Sheet.Copy
Résolu/Fermé
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
-
18 juin 2012 à 21:05
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 21 juin 2012 à 21:14
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 21 juin 2012 à 21:14
A voir également:
- [VBA] Method Sheet.Copy
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
7 réponses
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
362
Modifié par LeDénicheur le 21/06/2012 à 21:15
Modifié par LeDénicheur le 21/06/2012 à 21:15
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 ?!?
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
362
21 juin 2012 à 09:30
21 juin 2012 à 09:30
Personne n'a d'idées(s) ? Erf !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
21 juin 2012 à 09:57
21 juin 2012 à 09:57
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
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
362
Modifié par LeDénicheur le 21/06/2012 à 13:28
Modifié par LeDénicheur le 21/06/2012 à 13:28
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
21 juin 2012 à 13:54
21 juin 2012 à 13:54
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...
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
362
21 juin 2012 à 14:04
21 juin 2012 à 14:04
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.
LeDénicheur
Messages postés
565
Date d'inscription
samedi 5 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2013
362
Modifié par LeDénicheur le 21/06/2012 à 20:03
Modifié par LeDénicheur le 21/06/2012 à 20:03
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 ?!?