Besoin d'aide pour décrypter du code !

balzou

XLDnaute Nouveau
Bonjour à tous,

J'ai trouvé un code permettant de choisir une image en fonction d'une liste déroulante et j'en suis pleinement satisfait.

Maintenant il faut que je l'explique dans mon rapport et j'ai eu un peu de mal... Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Set images = Sheets("images")

If Target.Count = 1 Then

' supression
For Each s In ActiveSheet.Shapes
If s.Type = 13 Then
If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then
s.Delete
End If
End If
Next s

If Target <> "" Then
On Error Resume Next
images.Shapes(Target).Copy
If Err = 0 Then
Target.Offset(0, 1).Select
ActiveSheet.Paste
Selection.ShapeRange.Left = ActiveCell.Left + 20
Selection.ShapeRange.Top = ActiveCell.Top
Target.Select
End If
End If
End If

J'aimerais comprendre certaines lignes :
- la première avec la procédure privée, je ne comprend pas ce qui est entre parenthèse
- If Target.Count = 1 à quoi cela sert il ?
- dans la boucle For : If s.Type = 13 pourquoi s.type = 13 ?
- If Target <> "" à quoi cela sert il ?
- On Error Resume Next à quoi cela sert il ?
- ActiveSheet.Paste

voila le reste j'arrive à le comprendre mais ces quelques lignes me posent des soucis !

merci

balzou
 

Papou-net

XLDnaute Barbatruc
Re : Besoin d'aide pour décrypter du code !

Bonjour balzou,

Voici quelques précisions :

- la première avec la procédure privée, je ne comprend pas ce qui est entre parenthèse
Target est une variable système qui renvoie l'adresse de la cellule qui vient d'être modifiée

- If Target.Count = 1 à quoi cela sert il ?
Count compte le nombre de cellules qui sont incluses dans la sélection. Si n'y en a qu'une, la procédure continue mais si tu as modifié plusieurs cellules en même temps (CTRL + ENTER), et oui c'est possible, la procédure prend fin (elle va directement au dernier End If.

- dans la boucle For : If s.Type = 13 pourquoi s.type = 13 ?
Le type 13 doit correspondre à Image dans le type de Shapes (je n'en suis pas absolument certain, mais je ne vois pas autre chose étant donné la logique du code)

- If Target <> "" à quoi cela sert il ?
Si la cellule qui vient d'être modifiée n'est pas vide, les instructions se poursuivent au sein de la condition jusqu'à l'avant-dernier End If. Si elle est vide, il n'y a rien de particulier à faire, n'est-ce pas ?

- On Error Resume Next à quoi cela sert il ?
Cette ligne évite l'arrêt du programme et l'affichage de VBE en cas d'erreur. Elle exécute la ligne située juste en-dessous de celle qui a provoqué une erreur.

- ActiveSheet.Paste
Cette instruction colle le contenu du presse-papier de Windows dans la feuille actuellement à l'écran.



En espérant avoir répondu à tes attentes.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Besoin d'aide pour décrypter du code !

une autre petite question

le nom de la procédure : Worksheet_Change signifie que la procédure s'applique à chaque nouveau choix de ma liste déroulante ?

Cette procédure est lancée chaque fois qu'une cellule (ou plage de cellules) est modifiée. Donc, si ta cellule contient une liste déroulante, oui cette procédure s'applique également.

Cordialement.
 

Discussions similaires

Réponses
5
Affichages
261

Statistiques des forums

Discussions
312 731
Messages
2 091 439
Membres
104 939
dernier inscrit
quentin44