Problème avec checkbox Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 09:38

Bonjour,
J'ai un gros problème et malheureusement je n'arrive pas à le résoudre depuis 3 jours....
Je suis novice dans le domaine des macro et on me demande de créer sous Excel des checkbox dans la colonne M qui commence de M3 et qui finissent jusqu'à la dernière ligne, sachant que les colonnes de A à L sont remplie.

Voici mon code un peu fouilli:

    Sub Check_objet()
    Dim Chekbox As OLEObject
    Dim i As Integer
    Dim Target As Range
     
    For i = 3 To 13
     
        Set Target = ActiveSheet.Range("M" & i)
            Set Chekbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)
            With Chekbox
            .LinkedCell = Target.Offset(0, 1).Address(0, 0)
            .Object.Value = False
           End With
    Next
    End Sub
     
    Sub Derniere_ligne()
    Dim dernligne As Long
     
    dernligne = Range("M" & Rows.Count).End(xlUp).Row
    Range("M3").AutoFill Destination:=Range("M3:M" & dernligne)
    MsgBox "colonne check ok"
    End Sub


Merci de bien vouloir m'aider.
Cordialement.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 415
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 12 janvier 2015, 09:44

Bonjour,

Ta macro pour créer tes Check Boxes ne comporte pas d'erreur ... :wink:

Quelle difficulté rencontres-tu ...???


Edit : je viens concrètement de la tester ... et elle fonctionne ... :)
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 09:51

elle ne fonctionne pas .-.

quand je clique sur le bouton (qui est affecté à la macro check_objet) il m'affiche les checkbox mais que sur 11 lignes....(autrement dit c'est un nombre de ligne manuel)

et si j'attribue mon bouton à la macro Derniere_ligne
il m'affiche bien mon msgbox mais rien d'autre....

faire fusionner les 2 c'est en quelque sorte ce que je cherche à faire saut que le nombre de ligne manuel on peux supprimer
Modifié en dernier par borrougagnou le 12 janvier 2015, 10:24, modifié 2 fois.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 415
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 12 janvier 2015, 10:03

Re,

Il faut prendre les problèmes les uns après les autres ... :wink:

Si ta macro ne fonctionne pas du tout .. tu es sans doute victime, comme nous tous, du bug de Microsoft ...

Il te fermer Excel ... te rendre sur ton disque C: ... rechercher et supprimer tous les fichiers avec comme extension *.exd
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 10:08

J'ai trouver 1 fichier: "MSForms.exd"
je l'ai supprimé sa n'a rien changé (malgré l'affichage des fichier cacher système et normal)

PS: j'ai modifié ma phrase dans mon post précédent pour que cela soit plus compréhensible.
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 415
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 12 janvier 2015, 10:38

Re,

Merci pour les précisions ... c'est effectivement plus clair ... :wink:

Tu peux tester le code suivant :
Sub Check_objet()
    Dim Chekbox As OLEObject
    Dim i As Integer
    Dim Targ As Range
    Dim derl As Long
    
    derl = Range("L65536").End(xlUp).Row
    For i = 3 To derl
        Set Targ = ActiveSheet.Range("M" & i)
            Set Chekbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=Targ.Left, Top:=Targ.Top, Width:=Targ.Width, Height:=Targ.Height)
        With Chekbox
            .LinkedCell = Targ.Offset(0, 1).Address(0, 0)
            .Object.Value = False
        End With
    Next i
End Sub
Modifié en dernier par James007 le 12 janvier 2015, 12:27, modifié 2 fois.
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 10:46

Il m'affiche:
"Erreur d'execution '1004':

La méthode 'Range' de l'objet '_Global' a échoué"
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 11:14

:/
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'007
Appréciations reçues : 415
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 12 janvier 2015, 12:26

borrougagnou a écrit :Il m'affiche:
"Erreur d'execution '1004':

La méthode 'Range' de l'objet '_Global' a échoué"
Re,

Désolé ... :oops: un chiffre 5 de trop ... : derl = Range("L65536").End(xlUp).Row
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
b
borrougagnou
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 12 janvier 2015
Version d'Excel : 2002,2003,2010

Message par borrougagnou » 12 janvier 2015, 13:39

Un chiffre 5 ou un chiffre 3 ? :mrgreen:
parce que là, tu viens de supprimer un 3
mais j'ai compris c'est la limite max des fichiers sous excel 2003
et ton code marche ! *-* mais pourquoi mettre jusqu'à la ligne : 65536 au lieu de mettre jusqu'à la ligne de fin ?

Sachant que dans notre groupe, certain ont une version d'Excel 2010 qui leur permet d'afficher des fichiers Excel dépassant les 80 000 lignes donc il faut que le code cohabite avec les versions de 65536 lignes et de 1 million et des poussières de lignes d'où le fais que je t'ai montré cette lignes (sur pastebin):
dernligne = Range("M" & Rows.Count).End(xlUp).Row
Range("M3").AutoFill Destination:=Range("M3:M" & dernligne)

PS: il m'affiche VRAI et FAUX mais je ne sais pas comment l'effacer.

Merci de ton aide :3 elle m'est vraiment précieuse.
Modifié en dernier par borrougagnou le 12 janvier 2015, 13:43, modifié 2 fois.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message