Macro ne fonctionne qu'en pas à pas

Fermé
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016 - Modifié par baladur13 le 16/05/2016 à 09:44
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016 - 20 mai 2016 à 13:09
Bonjour,

j'ai trouvé cette macro sur internet qui fonctionne très bien en pas à pas, mais quand je la lance depuis le bouton, ça ne copie rien et je me retrouve avec un fichier JPG complètement blanc...

Pouvez vous m'aider please :-)


Sub photo()

Sheets("services").Activate
Dim S As Range
 Set S = ActiveSheet.Range("A1:D24")
  S.CopyPicture
  Application.ScreenUpdating = False
  Sheets.Add
  ActiveSheet.Name = "photo"
  With Sheets("photo").ChartObjects.Add(0, 0, S.Width, S.Height).Chart
    .Paste
    .Export "C:\Users\PAVILION\Desktop\services.jpg", "JPG"
  End With
  
Application.DisplayAlerts = False
Sheets("photo").Delete
Application.DisplayAlerts = True

ActiveWorkbook.Save

End Sub

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 mai 2016 à 09:09
Bonjour,

Tu as sans doute mis ta macro dans un module, si tu la mets dans ta feuille "services" elle devrait fonctionner.
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
16 mai 2016 à 21:16
Bonjour gbinforme.

Merci pour ta réponse rapide, c'est top !

Pour tout dire ceci est un bout de macro. Toute la macro fonctionne impeccablement, mais ce bout ne fonctionne qu'en mode pas à pas. Du coup je l'ai enlever du module où j'ai ma macro pour le mettre dans un autre module et faire un call sur ma macro racine.

J'aimerais bien essayer de mettre ma macro sur une feuille, mais je ne sais pas du tout comment faire, peux tu me donner quelques explications complémentaires ?

Merci encore :-)
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 mai 2016 à 22:29
Bonsoir,

Du coup je l'ai enlever du module où j'ai ma macro pour le mettre dans un autre module et faire un call sur ma macro racine.
Effectivement, je n'avais pas essayé le call !
Si avec le call elle fonctionne tu devrais pouvoir la garder dans le même module, ce qui est préférable au positionnement dans la feuille.

Le non fonctionnement vient sans doute d'un adressage incomplet (qui est réalisé du fait du pas à pas) mais je ne vois pas comment le compléter.

bonne soirée.
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
17 mai 2016 à 10:26
Salut :-)

En fait le call ne marche pas c'est pour ça que j'ai posté ma question :-)

Donc si tu peux m'expliquer comment mettre une macro dans une feuille, je pourrai essayer ?

Si quelqu'un d'autre a une idée, surtout n'hésitez pas, lol !!

Bonne journée à tous,
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
16 mai 2016 à 21:17
Merci beaucoup d'avoir mis les colorations etc, en fait, mon problème est que je n'ai pas pu sélectionner vba dans le menu code... Il n'y avait pas d'ascenseur pour aller au delà de s...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 mai 2016 à 21:13
Bonjour,

Dans ton cas, comme je t'ai dit il est préférable de garder ta macro dans le module. Avec ton code, la copie se perdait, alors je te propose celui-ci, pas très différent mais qui fonctionne me semble-t-il correctement.
Sub photo()

Dim S As Range, ws As Worksheet
  Set ws = Sheets("services")
  Set S = ws.Range("A1:D24")
  Application.ScreenUpdating = False
  Sheets.Add
  With ActiveSheet.ChartObjects.Add(0, 0, S.Width, S.Height).Chart
    ws.Range("A1:D24").CopyPicture
    .Paste
    .Export "C:\Users\PAVILION\Desktop\services.jpg", "JPG"
  End With
  
Application.DisplayAlerts = False
ActiveSheet.Delete
Set ws = Nothing
Set S = Nothing
Application.DisplayAlerts = True

ActiveWorkbook.Save

End Sub
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
19 mai 2016 à 22:11
bonjour,

désolée réponse un peu tardive mais le speed de la semaine avec les enfants... bref,

J'ai essayé ta proposition et ça ne marche malheureusement pas mieux...

Par contre un truc étrange s'est produit :

J'ai mis la macro sur un autre ordi sans changer le code et tout s'est bien passé. Puis au moment de faire la mise à jour (l'idée de cette macro c'est de mettre à jour un fichier excel puis de prendre une photo du résultat), et bien ça n'a pas marché.

Donc, je me demande si en rajoutant dans le code de commencer par effacer le dernier fichier JPG ça ne pourrait pas marcher...

Je teste et je te dis...

Merci pour tes conseils gbinforme
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
19 mai 2016 à 22:20
bon je viens d'essayer le kill, ça ne marche pas non plus...

Pourtant le pas à pas fonctionne parfaitement !! Je n'y comprends rien...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
20 mai 2016 à 09:41
Bonjour,

" le kill" ne sert à rien car "Export" remplace les données existantes.
Sur 2 configurations où j'ai essayé ta macro, j'avais le problème avec ton code mais le changement a corrigé le problème car la copie était perturbée par le changement de feuille.
0
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016
20 mai 2016 à 13:09
Alors de mon côté le mystère reste entier... J'ai copié collé ton code et ça ne marche pas..

En tout cas un grand merci d'avoir essayé et de m'avoir répondu !

Bon week end :-)
0