Sélectionner une checkbox

Hello!

J'ai un petit soucis : je n'arrive pas à sélectionner une checkbox qui se trouve sur une ligne donnée.

Quel est le code pour cela? Sachant que je connais les coordonnées exactes de la cellule qui contient la checkbox.

Merci d'avance,

Vip4rk

Pour être plus précis :

  • j'ai un tableau Devis avec un bouton ajout de ligne
  • il y a une checkbox sur chaque ligne en colonne I
  • je veux sélectionner la checkbox de la dernière ligne du tableau devis pour la renommer et lui affecter la bonne cellule liée

Voici mon code actuel :

Sub AjoutLigne()
'
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="victor"
Application.EnableEvents = False
'
Dim Ligne As Long
Dim NbLigneDevis As Long
'
Ligne = [LigneTotalDevis].Row - 1
''
    'on copie la dernière ligne du tableau et on l'insère à la suite
    Range(Cells(Ligne, 1), Cells(Ligne, 25)).Select
    Selection.EntireRow.Copy
    Rows(Ligne + 1).Select
    Selection.Insert Shift:=xlDown

    'Maj de la plage DevisTable
    Range("B22:T" & ([LigneTotalDevis].Row - 1)).Name = "DevisTable"

    'on met à jour le nom et la cellulé liée de la checkbox
    NbLigneDevis = Range("DevisTable").Rows.Count
    ActiveSheet.Range(9, Ligne).Shapes.Select
    With Selection
        .Name = "Check Box " & (NbLigneDevis)
        .Value = xlOff
        .LinkedCell = Cells(Ligne, 10)
        .Display3DShading = False
    End With
'
Application.CutCopyMode = False
Application.ScreenUpdating = True
ActiveSheet.Protect Password:="victor", AllowDeletingRows:=True
Application.EnableEvents = True
'
End Sub

C'est la ligne "ActiveSheet.Range(9, Ligne).Shapes.Select" qui pose problème.

Vip4rk

Up!

Vip4rk

Bonjour,

Cette idée de case à cocher ne me dit rien qui vaille : Je les ai supprimées.

J'ai supprimé également les cellules fusionnées ("cylindre") c'est une source d'emm... (remplacé par un rectangle texte)

J'ai déplacé également les colonnes masquées à droite du tableau... Comme le n'ai pas vu d'incidence dans les macros ni les calculs je n'ai donc rien modifié d'autre.

J'ai inséré deux plages nommées rngCC et rngArt qui couvre respectivement de manière dynamique les colonnes D et I et j'utilise ces plages dans les macros que j'ai corrigées.

J'ai également supprimé le bouton d'insertion de lignes (et sa macro) : Ça se fait désormais automatiquement si tu tentes d'écrire sur la dernière ligne...

A+

Nota ; le fichier joint comporte un oubli dans le code de la feuille devis !

Private Sub xWorksheet_SelectionChange(ByVal Target As Range)

Supprimer le x en rouge qui a servi à la mise au point !

Wow @Galopin01, j’ai hâte de voir tout ça!!

J’ai un rdv ce soir mais dès que je rentre je regarderai tout ça!! =D

Merci beaucoup

Vip4rk

Bonne lecture...

Nota : J'ai reporté en colonne R la colonne "Résultat case à cocher" et adapté la formule, mais en fait cette colonne ne sert plus à rien. On peut désormais se baser directement sur la valeur de la colonne I (i) sachant que coché c'est le chr(254) et décoché chr(168) en police Winding.

A+

Hello @galopin01,

Alors voici mon retour suite à analyse de ce que tu m'as gentiment fait :

  • passage des colonnes masquées à droite : je valide le principe mais malheureusement cela génère des erreurs de formules donc il faudra que je rectifie un peu les formules concernées
  • suppression des checkbox pour remplacement par des "simili checkbox" (je ne sais pas comment ça s'appelle) : je sais que les checkbox peuvent être des problèmes donc je comprends le choix. Par contre je n'arrive pas à cocher/décocher les simili checkbox
  • Défusion des cellules : c'est vrai que c'est source d'embêtement alors je valide aussi. Par contre je vais plutôt utiliser l'option "centrer sur plusieur colonne" que l'ajout d'un bloc de texte
  • Ajout de ligne automatique : j'aime bien le concept mais sur le fichier que tu as renvoyé une seule ligne s'est ajoutée mais bien en dessous du tableau devis (en ligne 60 alors que ma dernière ligne de tableau est en 30) <= il faudra que je regarde le code pour essayer de corriger

Merci en tout cas pour ton aide! Je vais bien m'inspirer de tout ça.

Toutefois pour les checkbox, il faut que je comprenne ces nouvelles versions.

Vip4rk

Par contre je serai quand même bien intéressé de savoir comment sélectionner ces foutues checkbox vu le teps que j'y ai passé!

Vip4rk

J'essaye ceci :

Range(Ligne).OLEObjects.Select

Sachant que Ligne renvoie la ligne ou se trouve la checkbox que je veux sélectionner.

Mais le message d'erreur suivant apparaît : "la methode Range a échouée"

Vip4rk

Bonjour,

... Par contre je serai quand même bien intéressé de savoir comment sélectionner ces foutues checkbox vu le teps que j'y ai passé!

...

Première étape, augmente temporairement le zoom de l'affichage à 150% ou plus dans Excel.

Clique droit sur le "checkbox" afin d'obtenir l'affichage des poignées de redimensionnement.

Assure-toi que celles du haut soient bien dans la cellule.

(Quand tu recopieras les lignes, ce positionnement suivra.)

checkbox

Tu peux remettre le zoom à son origine.

Le code suivant sélectionnera le "checkbox" situé dans la cellule indiquée. Dans le code suivant, c'est la cellule i22.

Sub Test()
Dim sh As Shape
   For Each sh In ActiveSheet.Shapes
      If Not Intersect(Range("I22"), sh.TopLeftCell) Is Nothing Then sh.Select
   Next sh
End Sub

Il ne restera qu'à adapter dans ton code pour la suite.

Les "checkbox" dans les feuilles, gérés par programmation, ne sont pas, à raison, les préférés des programmeurs séniors. Ils occasionnent souvent bien des soucis.

ric

Bonjour,

L'insertion de ligne se fait à la ligne :

[LigneTotalDevis].Row - 1

Si ce n'est pas la bonne ligne c'est que le fichier joint n'est pas une copie conforme de l'original ou que tu essaie d'insérer une ligne au beau milieu de ton tableau. Ce qui me semble le plus probable s'agissant d'un devis. Dans cas supprimer cette partie de la macro Private Sub Worksheet_SelectionChange

   If iR = [LigneTotalDevis].Row - 1 Then 'insertion de ligne (zone à supprimer...)
      ActiveSheet.Protect Password:="victor", UserInterfaceOnly:=True
      Rows(iR).Copy
      Application.EnableEvents = False
      Cells(iR + 1, 1).Insert Shift:=xlDown
      Application.EnableEvents = True
      Application.CutCopyMode = False
      Target.Activate
   End If

et rétablir ton bouton et ton ancienne macro.

Dans ma version on ne peut sélectionner la cellule car cela revient à cocher ou décocher et le focus est aussitôt donné à la cellule voisine.

Pourquoi diable vouloir s'évertuer à sélectionner ces foutues Shape alors que l'on vous répète toujours qu'en VBA on doit absolument éviter de sélectionner quoi que ce soit !

A+

Bonjour,

Je t'avais un peu perdu de vue... Je viens de me rendre compte d'une erreur que tu avais signalée dans mon fichier :

Si tu en as encore besoin, voir le correctif que j'ai rajouté au message.

Désolé.

A+

Rechercher des sujets similaires à "selectionner checkbox"