Macro: Insertion photos dans plusieurs cellules

Je n'ai pas cette erreur (sinon je ne l'aurais pas transmis), et j'ai retesté en reprenant le fichier dans le post, pas d'erreur !

Enregistre donc le fichier sur ton disque et teste.

L'erreur 70 n'est pas liée au programme, elle concerne une opération que tu n'es pas autorisé à faire !

Je ne vois pas bien quoi, mais en tout état de cause la source du blocage est sur ta machine.

MFerrand a écrit :

Je n'ai pas cette erreur (sinon je ne l'aurais pas transmis)

Oui je pense bien !

Enregistrer sur le disque ou le réseau l'erreur est toujours présente pour moi. La première insertion photo s'effectue toujours correctement, la macro supprimer photo ne fonctionne pas du tout par contre.

Mystère, mystère... mon ordi c'est vraiment pas une flèche, j’essaierai sur un autre poste si je peux, on verra!

Merci quand meme!

Après quelques recherche et expérimentation, j'en ai conclus que l'ordi que j'ai au boulot est un véritable veau

L'aide Microsoft me dit ceci concernant l'erreur 70 :

Vous avez tenté d'écrire dans un fichier qu'un autre processus a verrouillé.

Attendez que l'autre processus libère le fichier pour l'ouvrir.

Et effectivement si j’attends environ 1 min je n'ai pas ce message ! Incroyable...

En revanche la macro SupprimerPhoto y a rien a faire, elle tourne mais ne fait rien.

La proc. Supprimer est la même qui est dans Apposer !

Même code, je l'ai copié !

Je ne vois pas quel processus peut verrouiller, et prendre du temps...

Tu vas chercher tes photos où ? Dans un dossier de l'ordinateur ?

Tu peux toujours essayer de mettre une ligne : DoEvents en début de procédure. Si ça ne règle pas le problème, cela ne fera rien d'autre.

MFerrand a écrit :

La proc. Supprimer est la même qui est dans Apposer !

Oui j'ai bien remarqué cela, mais les photos ne sont pas supprimer que se soit avec "ApposerPhoto" ou "SupprimerPhoto" peut etre est ce la encore du à ma machine...

Les photos je les prends sur le réseau de l'entreprise. J'ai essayé de prendre directement sur le disque de l'ordi mais le problème est le même.

Si la suppression ne fonctionne pas dans les 2 procédures, c'est au moins logique !

Tu fais un essai de suppression avec Supprimer après avoir invalidé la ligne : On Error Resume Next (mettre une apostrophe devant).

Et tu m'indiques l'erreur d'exécution qui apparaît.

La logique voudrait que ce soit l'erreur 1004... mais il faut toujours s'attendre à tout.

Et je viens de voir que tu oeuvrais sous 2003, ce qui pourrait être une raison (des modifications sont intervenues depuis en ce qui concerne les objets Shapes... ?)

Si c'est le cas, on testera la suppression individuelle avec une boucle...

L'erreur est bien 1004 lorsque je rend invalide la ligne : On Error Resume Next

MFerrand a écrit :

Et je viens de voir que tu oeuvrais sous 2003, ce qui pourrait être une raison (des modifications sont intervenues depuis en ce qui concerne les objets Shapes... ?)

Si c'est le cas, on testera la suppression individuelle avec une boucle...

Oui c'est pénible de travailler sous 2003 je trouve mais je fais avec ce qu'on m'a donné... Je pense que c'est peut etre la raison car j'ai aussi lu que cette erreur intervenait quand il s'agit d'un problème de compatibilité. Je fais ce fichier pour des collègues qui travaillent sous une version plus récente d'excel donc je vais leur demander s'il arrive a faire tourner les macros. Si oui je laisserai le fichier tel quel

La transformation est rapide...

Version arrangée :

Sub ApposerPhoto()
    Dim Photo, Gauche!, Sommet!, Largeur!, Hauteur!
    Dim lig, i%, k%, n%
    lig = Split("ph1 ph2 ph3 ph4 ph5 ph6 ph7 ph8 ph9 ph10 ph11 ph12 ph13 ph14 ph15 ph16 ph17 ph18 ph19 ph20")
    On Error Resume Next
    For i = 0 To 19
        ActiveSheet.Shapes(lig(i)).Delete
    Next i
    On Error GoTo 0
    Photo = Application.GetOpenFilename("Images JPEG (*.jpg), *.jpg")
    If Photo <> False Then
        Largeur = Range("A85").Width
        Hauteur = Range("A85").Height
        lig = Array(11, 29, 46, 64)
        For i = 0 To 3
            For k = 2 To 30 Step 7
                n = n + 1
                Gauche = Cells(lig(i), k).Left
                Sommet = Cells(lig(i), k).Top
                ActiveSheet.Shapes.AddPicture(Photo, True, True, Gauche, Sommet, Largeur, Hauteur) _
                 .Name = "ph" & n
            Next k
        Next i
    End If
End Sub

Sub SupprimerPhoto()
    Dim phot
    phot = Split("ph1 ph2 ph3 ph4 ph5 ph6 ph7 ph8 ph9 ph10 ph11 ph12 ph13 ph14 ph15 ph16 ph17 ph18 ph19 ph20")
    On Error Resume Next
    For i = 0 To 19
        ActiveSheet.Shapes(phot(i)).Delete
    Next i
End Sub

A tester.

Cette version marche parfaitement !

Merci pour tout MFerrand !

Bonne journée.

Bonne journée à toi aussi !

Rechercher des sujets similaires à "macro insertion photos"