Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VBA EXCEL - GESTION DE MENUS CONTEXTUELS (CLIC-DROIT) PRÊTE À L'EMPLOI ET FACILE À PARAMÈTRER


Information sur la source

Catégorie :VBA Classé sous : menu contextuel, click droit, vba excel, commentaires, didacticiel Niveau : Débutant Date de création : 24/09/2007 Date de mise à jour : 05/12/2008 08:06:51 Vu / téléchargé: 12 669 / 1 172

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Cette source est contenue dans un modèle de classeur Excel. Elle a à la fois un but pédagogique (comprendre par l'exemple les mécanismes de base des menus contextuels) et pratique par son côté KIT prêt à l'emploi.

Le principe : Dans une feuille du modèle (masquée par défaut) figure une plage de cellule qui contient la liste des options des menus contextuels. C'est dans cette plage que le code va chercher pour créer le menu contextuel. Donc l'ajout, le déplacement, la suppression des options dans les menus contextuels se fait directement dans la feuille, sans toucher au code.

Sont intégrés :
-La gestion de plusieurs menus
-L'affectation de menus particuliers à certaines feuilles
-La gestion des séparateurs de groupes
-La possibilité de choisir les options activées ou non activées au démarrage
-La gestion des options communes à tous les menus
-La désactivation et la réactivation des menus personnalisés
-Des exemples d'accès aux options de menu par VBA (pour activer/désactiver, sélectionner/désélectionner, afficher/masquer... les options des menus par programme)

 

Source

  • '==============================================
  • ' Dans le module MenusContextuels
  • '==============================================
  • Option Explicit
  • Public mcMenusOuiNon As Boolean
  • Public Const mcDébutNom = "mc"
  • Public Const mcCommun = "mcCommun"
  • Public Const mcStandard = "mcStandard"
  • Public Const mcPlageMenus = "mcMenus"
  • Public Const mcPlageFeuilles = "mcFeuilles"
  • Public Const mcNomFeuilleMenus = "mcMenusContextuels"
  • ' Procédure de création des menus contextuels temporaires
  • ' cette procedure est appelée à l'ouverture du classeur
  • ' (Cf la Procedure WorkBook_Open du module de classe ThisWorkBook)
  • Sub mcCreationMenus()
  • 'On Error GoTo Erreur
  • Dim B As CommandBar
  • Dim C As CommandBarControl
  • Dim L As Single
  • Dim n As String
  • ' suppression de toutes les barres contextuelles mc
  • For Each B In Application.CommandBars
  • If Left(B.Name, Len(mcDébutNom)) = mcDébutNom And B.Position = msoBarPopup Then
  • B.Delete
  • End If
  • Next B
  • ' Ajout des barres de menu contextuel figurant dans la plage mcMenus
  • ' le nom est dans la première colonne de la plage
  • ' Position:=msoBarPopup indique qu'il s'agit d'un menu contextuel
  • With Range(mcPlageMenus)
  • ' on lit toutes les lignes de la plage
  • n = ""
  • For L = 1 To .Rows.Count
  • ' s'il s'agit d'un nouveau menu
  • If Not IsEmpty(.Cells(L, 1)) Then
  • ' on vérifie si le nom du menu est correct
  • ' (sauf si on est sur la dernière ligne de la plage)
  • If L <> .Rows.Count And (Left(.Cells(L, 1), Len(mcDébutNom)) <> mcDébutNom Or _
  • InStr(1, .Cells(L, 1), " ") > 0) Then
  • MsgBox "Vérifier les noms des menus SVP"
  • Exit Sub
  • End If
  • ' s'il ne s'agit pas du menu mcCommun
  • ' on ajoute les options de ce dernier au menu précédent
  • ' avant d'en créer un nouveau
  • If n <> "" And n <> mcCommun Then mcAjouteOptionsCommun n
  • ' la dernière ligne de la plage n'est pas un menu
  • If L = .Rows.Count Then Exit Sub
  • ' on crée le nouveau menu
  • n = .Cells(L, 1)
  • Set B = Application.CommandBars.Add(Name:=n, Position:=msoBarPopup, Temporary:=True)
  • End If
  • ' on ajoute une option de menu
  • Set C = B.Controls.Add
  • ' on définit ses propriétés
  • C.Tag = .Cells(L, 2) ' Définit la référence interne du contrôle qui
  • ' peut être utilisé ensuite avec la méthode FindControl
  • C.Caption = .Cells(L, 3) ' Définit le texte du menu (3ème colonne de la plage)
  • C.OnAction = .Cells(L, 4) ' Définit la procédure liée (4ème colonne de la plage)
  • C.BeginGroup = .Cells(L, 5) ' Indique si cette option est le début d'un groupe
  • ' (présence d'un trait de séparation avec l'option
  • ' précédente)
  • C.Enabled = .Cells(L, 6) ' Active ou désactive l'option à la création
  • Next L
  • End With
  • Exit Sub
  • Erreur:
  • MsgBox Err.Description & " (" & Err.Number & ") dans mcCréationMenus"
  • End Sub
  • Sub mcDésactiveMenus()
  • ' Procédure (appelée par une option des menus contextuels) qui désactive
  • ' l'usage des menus. Les menus contextuels standards d'Excel redeviennent actifs
  • ' En réalité, c'est la procédure évènementièle Workbook_SheetBeforeRightClick
  • ' qui va tester la variable globale mcMenusOuiNon pour savoir si elle intercepte de clic-droit
  • ' ou si elle laisse faire Excel
  • mcMenusOuiNon = False
  • End Sub
  • Sub mcActiveMenus()
  • ' Appel de la procedure de création du menu contextuel
  • ' Cette procédure est appelée par les touches : Ctrl-m
  • ' (elle ne peut pas être appelée par une option de menu car ce dernier est désactivé)
  • ' Elle recrée le système de menus et positionne l'indicateur d'activité à Vrai
  • mcCreationMenus
  • mcMenusOuiNon = True
  • End Sub
  • Sub mcAjouteOptionsCommun(NomMenu As String)
  • ' Cette procédure permet d'ajouter à la fin de tous les menus
  • ' les options du menu mcCommun
  • ' Appelée par la procédure mcCréationMenus
  • On Error GoTo Erreur
  • ' Barre de menu mcCommun et ses controles
  • Dim BSource As CommandBar
  • Dim CSource As CommandBarControl
  • Set BSource = Application.CommandBars(mcCommun)
  • ' La barre de menu nouvellement créée à laquelle on veut ajouter
  • ' les options de mcCommnun
  • ' Son nom est fourni par la procédure appelante (ici mcCréationMenus)
  • Dim BDest As CommandBar
  • Dim CDest As CommandBarControl
  • Set BDest = Application.CommandBars(NomMenu)
  • ' Pour chaque contrôle de mcCommun
  • ' on ajoute un contrôle à la nouvelle barre avec les mêmes propriétés
  • For Each CSource In BSource.Controls
  • Set CDest = BDest.Controls.Add ' ajout du contrôle
  • CDest.Caption = CSource.Caption ' récupération du texte (légende)
  • CDest.OnAction = CSource.OnAction ' récupération de l'action associée
  • CDest.BeginGroup = True ' Les options communes commencent toujours
  • ' un nouveau groupe
  • CDest.Tag = CSource.Tag ' récupération du Tag (identification interne)
  • Next CSource
  • Exit Sub
  • Erreur:
  • MsgBox Err.Description & " (" & Err.Number & ") dans mcAjouteOptionsCommun"
  • End Sub
  • Sub mcAfficheMasqueFeuilleMenus()
  • ' Cette procédure inverse la propriété de visibilité de la feuille Excel
  • ' qui contient les éléments des menus
  • With Sheets(mcNomFeuilleMenus)
  • .Visible = Not .Visible
  • ' après affichage, la feuille des menu est sélectionnée
  • If .Visible Then .Select
  • End With
  • End Sub
  • '===========================================================
  • ' Dans ThisWorkbook
  • '===========================================================
  • Option Explicit
  • Private Sub Workbook_Open()
  • mcActiveMenus
  • End Sub
  • ' Lorsque l'utilisateur utilise le bouton droit de la souris
  • Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  • On Error GoTo Erreur
  • Dim L As Integer
  • Dim n As String
  • ' Si Menu Contextuel non activé
  • ' on sort de la procédure et
  • ' le bouton droit de la souris garde son role habituel
  • If Not mcMenusOuiNon Then Exit Sub
  • ' si la feuille appelante figure dans la plage mcFeuilles
  • ' on affiche le menu correspondant
  • 'sinon on affiche le menu mcStandard
  • With Range(mcPlageFeuilles)
  • n = mcStandard
  • For L = 1 To .Rows.Count
  • If .Cells(L, 1) = Sh.Name Then
  • n = .Cells(L, 2)
  • Exit For
  • End If
  • Next L
  • End With
  • Application.CommandBars(n).ShowPopup
  • ' On annule l'affichage du menu contextuel par défaut
  • Cancel = True
  • Exit Sub
  • Erreur:
  • MsgBox Err.Description & " (" & Err.Number & ") dans le BeforeRightClick"
  • End Sub
  • '============================================
  • ' Dans un module : Quelques exemples d'accès aux menus
  • '============================================
  • Option Explicit
  • Function mcExemple()
  • ' Quelques exemples d'accès aux contrôles des menus
  • ' Pour déactiver le contrôle n du menu mcMachin
  • Dim n As Integer
  • CommandBars("mcMachin").Controls(n).Enabled = False
  • ' Pour masquer le contrôle de Tag mcTruc dans le menu mcMachin
  • CommandBars("mcMachin").FindControl(Tag:="mcTruc").Visible = False
  • ' Pour désactiver tous les contrôles du menu mcMachin
  • Dim C As CommandBarControl
  • For Each C In CommandBars("mcMachin")
  • C.Enabled = False
  • Next C
  • ' ou
  • With CommandBars("mcMachin")
  • For n = 1 To .Controls.Count
  • .Controls(n).Enabled = False
  • Next n
  • End With
  • End Function
'==============================================
' Dans le module MenusContextuels
'==============================================
Option Explicit
Public mcMenusOuiNon As Boolean
Public Const mcDébutNom = "mc"
Public Const mcCommun = "mcCommun"
Public Const mcStandard = "mcStandard"
Public Const mcPlageMenus = "mcMenus"
Public Const mcPlageFeuilles = "mcFeuilles"
Public Const mcNomFeuilleMenus = "mcMenusContextuels"

' Procédure de création des menus contextuels temporaires
' cette procedure est appelée à l'ouverture du classeur
' (Cf la Procedure WorkBook_Open du module de classe ThisWorkBook)
Sub mcCreationMenus()
    'On Error GoTo Erreur
    Dim B As CommandBar
    Dim C As CommandBarControl
    Dim L As Single
    Dim n As String
    ' suppression de toutes les barres contextuelles mc
    For Each B In Application.CommandBars
        If Left(B.Name, Len(mcDébutNom)) = mcDébutNom And B.Position = msoBarPopup Then
            B.Delete
        End If
    Next B
    ' Ajout des barres de menu contextuel figurant dans la plage mcMenus
    ' le nom est dans la première colonne de la plage
    ' Position:=msoBarPopup indique qu'il s'agit d'un menu contextuel
    With Range(mcPlageMenus)
        ' on lit toutes les lignes de la plage
        n = ""
        For L = 1 To .Rows.Count
            ' s'il s'agit d'un nouveau menu
            If Not IsEmpty(.Cells(L, 1)) Then
                ' on vérifie si le nom du menu est correct
                ' (sauf si on est sur la dernière ligne de la plage)
                If L <> .Rows.Count And (Left(.Cells(L, 1), Len(mcDébutNom)) <> mcDébutNom Or _
                    InStr(1, .Cells(L, 1), " ") > 0) Then
                    MsgBox "Vérifier les noms des menus SVP"
                    Exit Sub
                End If
                ' s'il ne s'agit pas du menu mcCommun
                ' on ajoute les options de ce dernier au menu précédent
                ' avant d'en créer un nouveau
                If n <> "" And n <> mcCommun Then mcAjouteOptionsCommun n
                ' la dernière ligne de la plage n'est pas un menu
                If L = .Rows.Count Then Exit Sub
                ' on crée le nouveau menu
                n = .Cells(L, 1)
                Set B = Application.CommandBars.Add(Name:=n, Position:=msoBarPopup, Temporary:=True)
            End If
            ' on ajoute une option de menu
            Set C = B.Controls.Add
                ' on définit ses propriétés
                C.Tag = .Cells(L, 2)        ' Définit la référence interne du contrôle qui
                                            ' peut être utilisé ensuite avec la méthode FindControl
                C.Caption = .Cells(L, 3)    ' Définit le texte du menu (3ème colonne de la plage)
                C.OnAction = .Cells(L, 4)   ' Définit la procédure liée (4ème colonne de la plage)
                C.BeginGroup = .Cells(L, 5) ' Indique si cette option est le début d'un groupe
                                            ' (présence d'un trait de séparation avec l'option
                                            '  précédente)
                C.Enabled = .Cells(L, 6)    ' Active ou désactive l'option à la création
        Next L
    End With
    Exit Sub
Erreur:
    MsgBox Err.Description & " (" & Err.Number & ") dans mcCréationMenus"
End Sub

Sub mcDésactiveMenus()
    ' Procédure (appelée par une option des menus contextuels) qui désactive
    ' l'usage des menus. Les menus contextuels standards d'Excel redeviennent actifs
    ' En réalité, c'est la procédure évènementièle Workbook_SheetBeforeRightClick
    ' qui va tester la variable globale mcMenusOuiNon pour savoir si elle intercepte de clic-droit
    ' ou si elle laisse faire Excel
    mcMenusOuiNon = False
End Sub
Sub mcActiveMenus()
    ' Appel de la procedure de création du menu contextuel
    ' Cette procédure est appelée par les touches : Ctrl-m
    ' (elle ne peut pas être appelée par une option de menu car ce dernier est désactivé)
    ' Elle recrée le système de menus et positionne l'indicateur d'activité à Vrai
    mcCreationMenus
    mcMenusOuiNon = True
End Sub

Sub mcAjouteOptionsCommun(NomMenu As String)
    ' Cette procédure permet d'ajouter à la fin de tous les menus
    ' les options du menu mcCommun
    ' Appelée par la procédure mcCréationMenus
    On Error GoTo Erreur
    ' Barre de menu mcCommun et ses controles
    Dim BSource As CommandBar
    Dim CSource As CommandBarControl
    Set BSource = Application.CommandBars(mcCommun)
    ' La barre de menu nouvellement créée à laquelle on veut ajouter
    ' les options de mcCommnun
    ' Son nom est fourni par la procédure appelante (ici mcCréationMenus)
    Dim BDest As CommandBar
    Dim CDest As CommandBarControl
    Set BDest = Application.CommandBars(NomMenu)
    ' Pour chaque contrôle de mcCommun
    ' on ajoute un contrôle à la nouvelle barre avec les mêmes propriétés
    For Each CSource In BSource.Controls
        Set CDest = BDest.Controls.Add          ' ajout du contrôle
        CDest.Caption = CSource.Caption         ' récupération du texte (légende)
        CDest.OnAction = CSource.OnAction       ' récupération de l'action associée
        CDest.BeginGroup = True                 ' Les options communes commencent toujours
                                                ' un nouveau groupe
        CDest.Tag = CSource.Tag                 ' récupération du Tag (identification interne)
    Next CSource
    Exit Sub
Erreur:
    MsgBox Err.Description & " (" & Err.Number & ") dans mcAjouteOptionsCommun"
End Sub

Sub mcAfficheMasqueFeuilleMenus()
    ' Cette procédure inverse la propriété de visibilité de la feuille Excel
    ' qui contient les éléments des menus
    With Sheets(mcNomFeuilleMenus)
        .Visible = Not .Visible
        ' après affichage, la feuille des menu est sélectionnée
        If .Visible Then .Select
    End With
End Sub

'===========================================================
' Dans ThisWorkbook
'===========================================================
Option Explicit

Private Sub Workbook_Open()
    mcActiveMenus
End Sub

' Lorsque l'utilisateur utilise le bouton droit de la souris
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    On Error GoTo Erreur
    Dim L As Integer
    Dim n As String
    ' Si Menu Contextuel non activé
    ' on sort de la procédure et
    ' le bouton droit de la souris garde son role habituel
    If Not mcMenusOuiNon Then Exit Sub
    ' si la feuille appelante figure dans la plage mcFeuilles
    ' on affiche le menu correspondant
    'sinon on affiche le menu mcStandard
    With Range(mcPlageFeuilles)
        n = mcStandard
        For L = 1 To .Rows.Count
            If .Cells(L, 1) = Sh.Name Then
                n = .Cells(L, 2)
                Exit For
            End If
        Next L
    End With
    Application.CommandBars(n).ShowPopup
    ' On annule l'affichage du menu contextuel par défaut
    Cancel = True
    Exit Sub
Erreur:
        MsgBox Err.Description & " (" & Err.Number & ") dans le BeforeRightClick"
End Sub

'============================================
' Dans un module : Quelques exemples d'accès aux menus
'============================================
Option Explicit

Function mcExemple()
    ' Quelques exemples d'accès aux contrôles des menus
    
    ' Pour déactiver le contrôle n du menu mcMachin
    Dim n As Integer
    CommandBars("mcMachin").Controls(n).Enabled = False
    
    ' Pour masquer le contrôle de Tag mcTruc dans le menu mcMachin
    CommandBars("mcMachin").FindControl(Tag:="mcTruc").Visible = False
    
    ' Pour désactiver tous les contrôles du menu mcMachin
    Dim C As CommandBarControl
    For Each C In CommandBars("mcMachin")
        C.Enabled = False
    Next C
    ' ou
    With CommandBars("mcMachin")
        For n = 1 To .Controls.Count
            .Controls(n).Enabled = False
        Next n
    End With
End Function

Conclusion

Ce code est fourni avec un exemple de classeur (MenuSimplifié.xls) qui utilise une version simplifiée avec un seul menu, un modèle de classeur(MenusContextuels.xlt) qui permet de créer de nouveaux classeurs avec le dispositif de menus prêt à l'emploi et un fichier texte qui contient le code (SourcesMenusContextuels.txt).

Le classeur obtenu par ce modèle ressemble aux classeurs vierges habituels (juste 3 feuilles vierges Feuil1, Feuil2 et Feuil3. Mais si vous utilisez le Clic-droit, vous voyez un menu contextuel particulier apparaitre. (Ce menu est d'ailleurs différent si on clique-droit sur la feuil1 ou sur les autres). La première chose à faire est sans doute d'afficher la feuille de menu.

Cette dernière est suffisamment commentée pour en comprendre le fonctionnement

Bon code
Jean
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • MenusContextuels.xltTélécharger ce fichier [Réservé aux membres club]73 216 octets
  • MenuSimplifié.xlsTélécharger ce fichier [Réservé aux membres club]268 800 octets

Télécharger le zip

Historique

28 septembre 2007 15:36:01 :
Ajout de la gestion de plusieurs menus, affectation de menus à des feuilles, fourniture d'un modèle prêt à l'emploi
28 septembre 2007 15:37:28 :
Ajout de la gestion de plusieurs menus, affectation de menus à des feuilles, fourniture d'un modèle prêt à l'emploi
28 septembre 2007 15:45:08 :
Modification de la capture
28 septembre 2007 15:45:47 :
Modification de la capture
28 septembre 2007 15:47:46 :
Modification capture
05 décembre 2008 08:06:51 :
Nouveau Zip : Amélioration des classeurs

Commentaires et avis

signaler à un administrateur
Commentaire de Charles Racaud le 25/09/2007 07:14:03

C'est pas mal mais il aurait été préférable de faire une fonction AjouterMenu dans tel menu, tel action, tel nom, plutôt que de prendre et mettre le contenu sur la feuille excel. Ca permettrai d'avoir plus de portabilitées.
__
Kenji

signaler à un administrateur
Commentaire de nerim le 25/09/2007 09:27:21

L'emplacement des options de menu est facilement transposable dans une variable tableau. Mais l'intérêt de ce code est justement la lisibilité et la facilité d'accès aux options des menus.

L'idée d'une fonction AjoutMenu me plait bien, mais elle irait chercher/placer ses éléments où? Il faut bien que ces options soient stockées en dur quelque part

La portabilité peut être en effet un problème. Mais à priori je développe essentiellement des procédures dont la portée se limite au classeur qui les contient. Ce qui est le cas je pense pour la plupart des développeurs débutants auxquels ce code s'adresse.

Enfin pour la portabilité du code lui-même, il suffit d'importer le module dans tout nouveau classeur, de copier les 2 procédures évènementielles et de créer une plage "Menus" quelque part dans le classeur. Personnellement, j'utilise même un modèle tout prêt qui contient tout ça.

Cordialement
JC

signaler à un administrateur
Commentaire de us_30 le 30/09/2007 23:38:08 10/10

Bonsoir,

Pas mal du tout... 10/10.

Amicalement,
Us.

signaler à un administrateur
Commentaire de klhsri le 27/10/2007 18:12:01 10/10

Super 10/10
J'aime bien la lisibilité et le côté pédagogique.
Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Nix tu devrais proteger les commentaires :( !!!! [ par fabiin ] bon, fait kan meme pas mal de source ke monsieur : deine@emailtresvalide.com met ceci en commentaire:Nix tu devrais proteger les commentaires <img sr Drôles de commentaires sur les programmes(bonjour à Nix) [ par gv ] Bonjour,je suis gv (gérard vient), c'est moi qui est créé par exemple le gestionnaire de base de données.Je ne sais pas ce qu'il se passe en ce moment Rapport à la compil' [ par JEROMAX ] Salut NixDécidement, ça faisait un bout de temps que je ne venais plus et voila je m'y remets.Je viens de recevoir ta lettre et je viens de récupérer MsChart + commentaires ????? [ par Stoomm ] Bonjour, Je cherche a mettre des comentaire sur chaque point de ma courbe (MsChart)Je n'y arrive pas.quelqu'un peut il m'aider ?Merci.Stoomm. cours et didacticiel de flash de macromedia [ par martinkk ] quels sont les sites où l'on peut avoir les cours de flash de macromedia ? Comment ecrire les Commentaires [ par pirate75000 ] J'ai créé un ocxJ'ai ajoute des des procédures de propriétésavec Property get ...Comment ajouter les commentaires en bas de la fenétre propriéte de l' Saturation de voir les commentaires négatif !!!!!!!!! [ par Jackboy ] Je suis programmeur analyste orienté Internet depuis environ un an et demie, pas plus !!! Depuis mes début, je suis sur VbFrance, et merci en passent A Nix : a propos du site vbfrance [ par shadowmoy ] pourquoi n'est-il pas possible de "vider" les commentaires sur une de ma source age of rebellion ? est-ce que tu peut les virer sauf le dernier ?ca se Modificat° de la taille des commentaires d'excel... [ par thehitman ] hi,j'insere, via 1 appli vb, 1 commentaire dans 1 cellule sous Excel. mon texte est &gt; a la taille du commentaire... comment faire pour modifier la NIX URGENT [ par gvient ] Bonjour,et bonne annéeNix pourrais-tu permettre au créateur de source de supprimer les commentaires (à la con), sur nos propres sources.Parce que j'en


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.