[Résolu] Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Otacon Ghost

XLDnaute Nouveau
Bonjour à tous,

Me remettant au VBA après 12ans sans en avoir refait, je suis confronté à un problème qui pour vous vas certainement vous sembler toute bête.

Dans le fichier Excel 2007 ci-joint je cherche à déterminer la position (l’adresse) des shapes (cases à cocher et images) associer à une ligne, sachant que le n° de la ligne es déterminé via la coche/décoche d’une des cases à cocher.

Pour ce faire j’utilise le Application.Caller qui me permet de déterminer quelle case a été cochée et surtout son état.

Maintenant je cherche à déterminer l’adresse de la case à cocher qui viens d’être cliqué, puis via une boucle je pensais parcourir l’ensemble du tableau des « shapes » afin de déterminer quelles sont les autres « shape » qui ce trouvent sur la même ligne que la case à cocher qui viens d’être cliquer.

Petit exemple qui sera certainement plus clair qu’un long discourt.
Avec mon fichier Excel :
Je coche la case « Case à cocher 2L4 ». Je veux donc récupérer l’adresse de cette case, soit H4.
Ensuite je parcours le tableau des « shapes » et je recherche toutes les « shapes » qui se trouvent sur la ligne 4.
Je devrais donc trouver les shapes « image2 », « Case à cocher 1L4 », « Case à cocher 2L4 », « Case à cocher 3L4 ».

Est-ce que quelqu’un aurait une petite idée, une piste à explorer afin de résoudre cette problématique?

Merci d’avance à tous pour votre aide
 

Pièces jointes

  • Test Case à cocher.xlsm
    46.9 KB · Affichages: 95
  • Test Case à cocher.xlsm
    46.9 KB · Affichages: 91
  • Test Case à cocher.xlsm
    46.9 KB · Affichages: 92
Dernière édition:

mutzik

XLDnaute Barbatruc
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

bonjour,

je n'ai pas la réponse à ta question, quelqu'un va certainement passer et te la donner
par contre, je voudrais connaitre le but de cette façon de faire, je pense qu'il y aurait peut-être une manière plus simple de résoudre ton prob
 

James007

XLDnaute Barbatruc
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Bonjour,

Code générique avec TopLeftCell pour localiser les Shapes ...

VB:
Sub Test()
    Dim maShape As Shape
    Dim C As Range

    For Each C In Range("F1:I6")
        For Each maShape In ActiveSheet.Shapes
                If Intersect(maShape.TopLeftCell, C) Is Nothing Then
                    '
                Else
                    MsgBox maShape.Name & " est avec " & C.Address
                    Exit For
                End If
        Next maShape
    Next C
End Sub

A +
:)
 

Otacon Ghost

XLDnaute Nouveau
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Bonjour mutzik,

Et merci pour ta réponse.

Alors voici l’explication de ce que je cherche à faire. Tu vas voir à priori c’est tout con à expliquer, mais bien plus compliquer à mette en œuvre.
Si tu as une autre solution, une autre piste à me proposer, que celle à laquelle je penser je suis preneur.

Le but de ce fichier Excel est donc, en fonction du nombre de cases à cocher coché sur la ligne, changer l’image de la première colonne pour cette ligne.

En gros je fais un fichier de météo.

Pour une ligne s’il n’y a aucune case à cocher, cochée pour la ligne courante, l’image de la première colonne est un soleil.
Si j’ai une case à cocher, cochée pour la ligne courante, l’image de la première colonne est un nuage.
Si j’ai deux cases à cocher, cochées pour la ligne courante, l’image de la première colonne est un nuage de pluie…

Voilà, j’espère, que j’ai été clair.

Je suis ouvert à toutes pistes, infos.

Encore merci à vous tous pour votre aide. :D
 

James007

XLDnaute Barbatruc
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Re,

Pourquoi ne pas tout simplement utiliser la propriété LinkedCell ... ???

Et, pour la cosmétique, tu formattes toutes tes cellules liées, sous tes checkboxes, en blanc ...


A +
:)
 

Otacon Ghost

XLDnaute Nouveau
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Re James007 et merci pour ta nouvelle réponse.

J’avais déjà envisagé de passer par LinkedCell, mais avec cette solution je suis confronté au problème de modification de l’image suite aux résultats du calcul (la somme que constitue chaque case à cocher, cochée).

Tu ferais ça comment avec LinkedCell? :confused:
Tu pourrais me faire un exemple à partir de mon fichier? Je sais j’abuse de ta gentillesse.

Merci d’avance pour ta réponse:D
 

Otacon Ghost

XLDnaute Nouveau
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Ok merci James007 pour ta gentillesse. :eek:

Alors les règles sont très simples. Je te donne un exemple ce sera plus simple.

Pour la ligne 4, chaque case à cocher, cochée équivaut à un 1 (0 si pas cocher).
On fait la somme de la valeur retournée par les cases à cocher pour la ligne courante, et en fonction du résultat on change l’image de la colonne F pour cette ligne.

Pour une somme de 0 (aucune case à cocher cochée), l’image est soleil
Pour une somme de 1 (une case à cocher cochée sur les 3), l’image est soleil avec nuage.
Pour une somme de 2 (deux cases à cocher cochées sur les 3), l’image est pluie.

Le calcul est fait au moment ou l'on coche une case à cocher sur la ligne 3.


Je t’avoue que je suis curieux de voir comment tu vas faire pour changer l’image à la volée… Je sens que je vais me coucher moins bête ce soir ^_^

Merci pour ton aide précieuse.
 

Otacon Ghost

XLDnaute Nouveau
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Re James007,

Merci pour ta réponse et le fichier joint...

Par contre j'ai un petit souci au lancement du fichier:
Erreur d'exécution '1004'
Erreur définie par l'application ou par l'objet

Code:
Private Sub Worksheet_Calculate()
Dim nom
Dim img As String
Dim C As Range
Set C = Cells(i, 10)
Select Case C.Value
        Case 0
        img = "Image 1"
        Case 1
        img = "Image 2"
        Case 2
        img = "Image 3"
        Case 3
        img = "Image 4"
    End Select
Ajouter (img)
End Sub

L'erreur est sur la ligne Set C = Cells(i, 10)

Une idée de ce qui merdouille? Tu as le soucis chez toi?

Encore merci pour ton aide
 

Otacon Ghost

XLDnaute Nouveau
Re : Trouver l'adresse d'une case à cocher, suite à sa coche/décoche

Ok James007 je vais chercher à comprendre ce que tu as fait et avec un peux de chance je vais trouver ce qui merde chez moi...
Peux être un souci avec Excel 2007?

Je te tiens au courant

En tout cas merci d'avoir pris du temps pour me faire cet exemple ^_^
 

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 008
Membres
103 429
dernier inscrit
PhilippeH