Résultats pour "declaration variable object togglebutton"

1'544 résultats pour cette recherche

Bonjour à toi qui passe par ici !

Je suis à la recherche d'une explication quant à un comportement d'excel qui m'échappe et peut-être pourras-tu m'aider.

Voici la situation :

Sur une feuille de calculs (que nous nommerons de manière très inspirée "Feuil1") j'ai un ToggleButton (disons "Button1") dont il m'arrive de récupérer et/ou manipuler l'état ici et là dans mon code.

La feuille intervenant en de multiples endroits dans mes macros, j'ai souhaité me simplifier la vie en utilisant une variable globale (oui, il y a sûrement plus propre, mais là n'est pas la question). S'agissant d'une feuille de calculs, je déclare ma varible comme telle avant de lui assigner la feuille en question. En gros :

Public maFeuille As Worksheet (dans un premier temps)
Set maFeuille = ThisWorkbook.Worksheets("Feuil1") (complètement ailleurs dans le code)

Jusque là tout va bien. Les ennuis commencent quand je cherche à jouer avec l'état du bouton... Naïf que suis, je tente d'y accéder en utilisant :

maFeuille.Button1.Value

et me fais copieusement insulter par excel (erreur de compilation, tout ça).

Je ne me décourage pas et tente, pour voir, de passer outre la variable avec :

ThisWorkbook.Worksheets("Feuil1").Button1.Value

qui fonctionne parfaitement bien.

Histoire de voir ce qui se passe là-dessous, je dégaine l'espion qui semble me dire que la seule différence entre maFeuille et ThisWorkbook.Worksheets("Feuil1") est leur type. Il m'annonce Worksheet/Feuil1 pour le premier et Object/Feuil1 pour le deuxième.

Toujours dans l'espion, je tente d'accéder au bouton qui apparaît bien dans les deux arborescences et sans trop de surprise, erreur en passant par la varaible alors que tout va bien avec l'expression complète.

Passablement têtu, je modifie ma déclaration afin de changer ma variable en objet et non simplement une feuille de calcul (qui est pourtant bien un objet parmi d'autres, sauf erreur de ma part). Je me retrouve donc avec :

Public maFeuille As Object

Et là, miracle, ça fonctionne !

J'aimerais donc que tu m'expliques si tu le peux, Ô astucieux passant, pourquoi le fait de dire à excel que l'objet qu'il manipule est une feuille de calcul l'empêche d'accéder à un bouton pourtant bel et bien présent dans ladite feuille de calcul. Et pourquoi il ne râle pas une seule seconde si on le laisse ignorer ce détail en lui mettant simplement un objet indéterminé entre les pattes.

Il ne s'agit pas là d'un problème puisque mon code fonctionne comme je le souhaite, mais bien d'une envie de comprendre le pourquoi de ce comportement d'excel afin de ne pas me faire avoir la prochaine fois.

Merci d'avance pour ton temps si d'aventure tu as une explication à me suggérer.

Guitruc

Bonjour à tous,

Je suis novice en VBA, et je rencontre un problème avec une macro.

Je dispose de deux feuilles dans mon classeur excel appelées Feuille1 et Feuille2. Me première routine recupère des données de Feuille1. Dans cette routine il y a un appel à une sous-routine qui doit recupérer des données de Feuille2.

Voici le code :

Sub routine1()

Worksheets("Feuille1").Select

...

...

Sous_routine1(cpt) 'Appel à la sous-routine

...

...

End Sub

Sub sous-routine(value as Long)

Dim BW As Single

Dim wsh1 As Worksheet

Set wsh1 = Worksheets("Feuille2")

BW = wsh1.Cells(Range("A1:Z100").Find("BW").Row, Range("A1:Z100").Find("BW").Column + 1).value

End Sub

L'erreur " runtime error 91 object variable or with block variable not set" apparaît à la ligne BW = wsh1.Cells(Range("A1:Z100").Find("BW").Row, Range("A1:Z100").Find("BW").Column + 1).value

Je vous remercie d'avance pour votre aide !

Bonjour j'ai eu l'erreur d'exécution 91 : Variable object ou variable de bloc with non definie

Quand je clique sur débogage il me cible :

Private Sub modification_Click()
    Form_modif.Show
End Sub

et voice le code entire :

FEUIL1

Private Sub Ajouter_Click()
    Form_ajout.Show
End Sub

Private Sub modification_Click()
    Form_modif.Show
End Sub

Private Sub suppression_Click()
    ID = InputBox("Veuillez écrire le numéro de l'ID à supprimer", "ID à supprimer")
    ID2 = CInt(ID)
    For i = 2 To WorksheetFunction.CountA(Range("A:A"))
        If ID2 = Cells(i, 1) Then
            Rows(i).Delete
        End If
    Next
End Sub

Form_Modif :

Private Sub annuler_Click()
    Unload Form_modif
End Sub

Private Sub modifier_Click()

End Sub

Private Sub UserForm_Initialize()
    Form_modif.fonction.AddItem ("TOOLEUR")
    Form_modif.fonction.AddItem ("CONCEPTEUR")
    Form_modif.fonction.AddItem ("STAGIERE")

    ID = InputBox("Veuillez entrer l'id de la personne à modifer", "id de modification")
    If ID <> "" Then
        ID2 = CInt(ID) ' mettre en integer

        For i = 2 To WorksheetFunction.CountA(Range("A:A"))
            If Cells(i, 1) = ID2 Then
                Form_modif.nom = Cells(i, 2)
                Form_modif.prenom = Cells(i, 3)
                Form_modif.fonction = Cells(i, 4)
            End If
        Next
    End If

    Unload Form_modif
End Sub

Le problème vient quand je rentre mon ID avec l'inputBox.

Je vous remercie pour votre futur aide ..

Cordialement.

Salut,

Tout est dans le titre. Je pensais que la touche [Entrée] fonctionnerait comme pour les CommandButton mais non.

Du coup est ce qu'il est possible de paramétrer la validation ou la dévalidation de ces contrôles par une touche du clavier en plus d'un clic de souris ?

Merci d'avance.

Manu

Bonjour a tous,

Ma question est, peut on modifier un contrôle activeX togglebutton en "ToggleButton1.Value = False" en fonction d'une formule d'une cellule sans toucher au togglebutton ?

Exemple: Si A1 = 1 le togglebutton change de true a false et si A1 = vide togglebutton change de false a true.

Et idem avec un bouton activeX peut on changer sa couleur si A1 = 1 sans que celui si soit cliqué et si A1= vide le boutton change d'une autre couleur.

Merci de vos réponse.

Bonjour,

Il y a quelques jours j'ai exposé un problème que j'ai rencontré concernant l'import de Toggle Buttons et de leur LinkedCell.

On a pu m'aidé à passer cette étape, mais me voilà bloqué à nouveau.

Je vous explique mon problème :

J'ai créé un script qui ajoute n x 3 Toggle Buttons ActiveX (n étant le nombre de lignes (que je ne peux pas connaître à l'avance) et 3 car je les ajoutes sur 3 colonnes adjacentes, et donc 1 par colonne) et qui set leur LinkedCell "derrière" la position du Toggle Button.

Chaque TB a pour a pour fonction de modifier la mise en page ou le contenu des cellules de la ligne où se situe le TB utilisé (et donc sa LinkedCell). Tous les TB d'une même colonne ont donc la même fonction, seules les cellules ciblées doivent s'adapter pour correspondre à la ligne du TB.

Voici ma question :

Est-il possible d'ajouter dans mon script d'import une fonctionnalité telle que le .OnAction afin que tous les Toggle Buttons aient la même macro utilisée lors de l'activation et désactivation du TB ?

Dans le cas contraire, auriez-vous une idée d'une solution alternative pour effectuer ce que je souhaite faire ?

Par avance, merci à ceux qui me viendront en aide !

Bonjour à toutes et à tous,

Au cours d’un projet je rencontre un problème avec la fonctionnalité .Me et les ToggleButtons.

Tout d’abord, je vous explique ce que je souhaite réaliser.

J’aimerai créer une macro qui permet d’insérer un nombre n de ToggleButton, les uns au-dessus des autres, chacun dans une cellule et qui paramètre automatiquement leur LinkedCell par leur cellule de départ.

Débutant en VBA, je ne vais pas vous partager ce que j’ai réussi à faire car ce sont surtout des ébauches de code qui concerne les étapes d’avant et après cette histoire de ToggleButton.

En revanche, je peux vous partager un code que j’ai trouvé sur Internet (sur MrExcel.com) et qui semble être exactement ce que je souhaite, mais qui ne fonctionne pas chez moi.

Sub test()

    Dim TB As MSForms.ToggleButton

    Dim OleObj As Excel.OLEObject

    Dim StartCell As Range
    Dim Col As Integer
    Dim LeftPos As Long
    Dim TopMargin As Long
    Dim i As Long

    Application.ScreenUpdating = False

    Set TB = Me.ToggleButton1 'change the name accordingly

    Set StartCell = TB.TopLeftCell

    Col = StartCell.Column

    LeftPos = TB.Left

    TopMargin = TB.Top - StartCell.Top

    For i = 2 To 30
        Cells(i, Col).RowHeight = StartCell.RowHeight 'ensure each row is the same height
        Set OleObj = Me.OLEObjects.Add( _
            ClassType:="Forms.ToggleButton.1", _
            Left:=LeftPos, _
            Top:=Cells(i, Col).Top + TopMargin, _
            Width:=TB.Width, _
            Height:=TB.Height)
        With OleObj
            .LinkedCell = Cells(i, Col).Offset(, -1).Address
            .Object.Value = False
        End With
    Next i

    Application.ScreenUpdating = True

    

Lorsque j’active la macro, j’ai une fenêtre d’erreur qui me dit : « Erreur de compilation : Utilisation incorrecte du mot clé Me ».

Étant totalement débutant en VBA, je dois sûrement passer à côté de quelque chose d’évident. Si c’est le cas je m’en excuse par avance !

S'il faut que donne davantage de détails, n'hésitez pas à me le demander.

Merci à ceux qui me viendront en aide !

Bonjour,

J'aime bien les trucs compliqués et dans le genre je pense en avoir trouvé un pas mal...

Savez-vous s'il est possible que lorsqu'un ToggleButton affiche une information non barrée, alors il y ait une réaction et s'il affiche une information barrée, alors une autre réaction.

C'est surtout le fait que ce soit barré ou non qui m'embête et, a priori, excel ne fait pas la différence entre caractères barrés / non barrés

J'ai fais un petit document Excel pour illustrer ce que je souhaite faire. Tout fonctionne sauf "barré" / "pas barré"

Bonne journée !

A plus tard.

Bonjour,

Dans un userform d'un ficher client, j'ai 2 tooglebutton

Tooglebutton 1 = création (de la fiche client)

Tooglebutton 2 = modifier (la fiche client)

Comment faire lorsque

1/l'on créé la fiche client, pour empecher d'appuyer sur le tooglebutton 2 => obliger la personne à faire clic sur bouton création

2/ l'on modifie la fiche client pour empecher d'appuyer sur le tooglebutton 1 = Obliger la personne à faire clic sur bouton modification

Merci de vos réponses

Bonjour,

je souhaite créer un toggle button qui permettrai d'afficher/masquer les lignes vertes (Interior.ColorIndex = 4) de mon Tableau15 (feuille "GLOBAL"). Ce tableau comporte 16 colonnes (de A à P) et quelques lignes y sont ajoutées tous les jours.

De nombreuses lignes au fond vert ne nous intéressent pas, et je souhaiterai avoir la possibilité de masquer ces lignes pour ne faire apparaître dans ce tableau que les éléments importants.

Auriez-vous des éléments de réponse ?

Merci !

Bonjour à tous,

J'ai besoin d'avoir dans un onglet principal des boutons qui me permettent d'afficher ou nom des colonnes sur différents onglets en fonction d'une période.

Je souhaite aussi faire une deuxième version avec une liste déroulante.

Et si possible coder avec le nom des feuilles et non des onglets.

Voir fichier joint :

2vba.xlsx (24.93 Ko)

Merci par avance pour votre aide.

Cordialement

Bonjour le forum.

Y a t'il moyen de faire une boucle sur des "ToggleButton" , de 1 à 30 en disant:

Si ToggleButton1 = true then

ToggleButton de 2 à 30 = False

Et ainsi de suite.

Merci.

Bonjour

J'ai un formulaire avec plusieurs togglebutton.

Objectif 1: Quand on clique sur le Togglebutton1 (bouton enfoncé), celui-ci devient vert et les autres Togglebutton deviennent rouge et relevés.

Objectif 2: Quand on reclique sur le Togglebutton1 (relevé) celui-ci devient gris et tous les Togglebutton aussi.

Objectif 3: Quant on réalise l'objectif 1 et qu'on clique le Togglebutton 2, celui-ci (Togglebutton2) devient vert et enfoncé et les autres deviennent rouge (relevés)

Les objectifs 1 et 2 sont atteints. L'objectif 3 rencontre un problème: Si je réalise l'objectif 1 et qu'après je clique sur le togglebutton 2, le togglebutton1 devient gris au lieu d'etre rouge.

Pouvez-vous m'aider ?

Merci

Johann

60togglebutton.xlsm (18.88 Ko)

Bonjour à toutes et à tous,

J'ai un togglebutton qui lance différente macro (1ère partie : Déverrouillage et Affichage / 2ème partie : Masquage et Verrouillage)

Alors cher Père ou Mère Noël : Je souhaiterai mettre un mot de passe au lancement de la 1ere partie seulement , je m'explique :

Je clique sur le bouton , un mot de passe est demandé, je le saisi, ça lance la 1er partie.

Je reclique sur le bouton, ça lance la 2ème partie sans mot de passe à saisir ni de msgbox.

Je clique sur le bouton , un mot de passe est demandé, je saisi un mauvais mot de passe, ça lance rien du tout et le bouton reste normal (pas enfoncé).

J'ai essayé quelque chose, mais si je me trompe ou j'annule, le bouton reste enfoncé, et si je saisi le bon mdp, il me le demande à chaque partie.

Merci et bonnes fêtes de fin d'année.

Code :

[Private Sub ToggleButton1_Click()

Dim sPass As String

sPass = InputBox("Veuillez saisir le mot de passe")

If sPass = "planning" Then

If ToggleButton1 Then

Call Déprotéger

Call Défiltrer

Else

Call Filtrer

Call Protéger

Sheets("Bdonnées").Select

ActiveWindow.SelectedSheets.Visible = False

End If

Exit Sub

End If

End Sub[/b][/b]

Bonsoir,

Après plusieurs recherches je galère...

J'ai un Userform avec 9 togglebutton renommés TgbFrançais, TgbAllemand, TgbAnglais, etc.

J'ai aussi un commandbutton pour valider le choix de l'utilisateur.

Ils sont tous dans une frame.

Je souhaiterais que l'utilisateur ne puisse sélectionner qu'un togglebutton à la fois, donc que si un est sélectionné les autres ne le soit pas.

Ensuite je souhaiterais afficher une msgbox si aucun togglebutton n'a été sélectionné lorsque l'utilisateur valide avec le

Dans les 2 cas, impossible de trouver la solution !

Voilà... Si quelqu'un a une idée...

Merci de votre aide

MVBAM


J'ai oublié de préciser que j'ai pour l'instant ce code:

if TgbFrançais = true then 
TgbAllemand = false
TgbAnglais = false
End if 

Et cela sur les 9 togglebutton

Et pour le commandbutton:

if TgbFrançais = false and TgbAllemand = false and TgbAnglais = false then
Msgbox "attention, aucune matière sélectionnée"
End if

Ce que je souhaiterais en réalité c'est alléger un peu ce code qui devient long avec 9 boutons...

Désolée pour le manque de précision...

Bonjour le forum,

J'ai un Userform avec 91 togglebutton et j'aimerai que chacun de ces buttons soient d'une couleur quand il ne sont pas activés et d'une autre quand il le sont.

Seulement je n'arrive pas à trouver comment écrire cette procédure sans répéter 91 fois en changeant le numéro du bouton :

Private Sub ToggleButton1_Click()
If UserForm1.ToggleButton1.Value = True Then
UserForm1.ToggleButton1.BackColor = RGB(255,0,0)
elseIf UserForm1.ToggleButton1.Value = false Then
UserForm1.ToggleButton1.BackColor = RGB(0 ,255, 255)
end if
End Sub

C'est très fastidieux ! Je ne trouve pas comment appliquer un code à de multiple boutons.

J'ai bien essayé dans l'initialize une boucle de type :

for i =0 to 90
if Controls("togglebutton" & 1 + i).Value = True Then
Controls("togglebutton" & 1 + i)..backcolor = rgb(255,0,0)
elseif  Controls("togglebutton" & 1 + i).Value = false Then
Controls("togglebutton" & 1 + i)..backcolor = rgb(0,0,255)
end if
next 

Ce qui m'applique bien un mise en forme de mes boutons mais seulement à l'initialisation, et si je clique dessus après rien ne se passe....

Je serais preneur d'un coup de main pour trouver comment appliquer ce code à tout mes boutons sans prendre des centaines de lignes de code..

Merci !

Bonjour,

Je souhaite utiliser des variables publiques pour les utiliser plusieurs userforms mais cela ne fonctionne pas, ca ne les mémorise pas. J'ai déclaré les variables dans un module comme cela :

Public ChronoPV As String 'nom du PV réalisé

Public NPV As String 'type de PV (numéro à 3 chiffres)

Public NomPV As String 'type de PV (nom entier)

Public typefich As String 'type de fichier PV (word ou excel)

Public demandeur As String 'nom complet du demandeur

Public operateur As String 'nom complet de l'opérateur

Public objet As String 'objet/commentaire de l'opération

Dans ce même module, j'ai un bouton qui ouvre un userform

Public Sub Bouton1_Cliquer()

UserForm1.Show

End Sub

Sur ce même userform, j'ai un bouton dans le code du userform qui execute un code qui commence par :

Public Sub CommandButton4_Click()

Lorsque j'analyse les erreurs à l'aide d'un pas à pas détaillé, à l'instant ou je clique sur le bouton CommandButton4 de mon userform, je remarque que toutes mes variables passent en Variant/Empty, comme si je ne les avaient pas déclarées.

Je pense que cela est la source de mon problème mais je n'arrive pas à le résoudre.

Votre aide est bienvenue.

Lucas

Salut,

Est ce que quelqu'un saurait 'expliquer pourquoi ce code ne marche pas ? Ca bloque à la première ligne

Set USF = UserForms.Add("USF1003_00_MatérielModèles")
Champ1 = USF.Controls("Champ" & vbMatériel_modèles_Constructeur)
Champ2 = USF.Controls("Champ" & vbMatériel_modèles_Type)
Champ3 = USF.Controls("Champ" & vbMatériel_modèles_Modèle)

La variable USF est bien déclarée en public comme Object, la UserForm "USF1003_00_MatérielModèles" existe bien. Elle est d'ailleurs ouverte en arrière plan par la procédure :

Set USF = UserForms.Add(Sheets("Menu").Cells(Node.Index, vbMenuPrincipal_UserForm))
USF.Show

J'ai essayé de déclarer une autre variable vu que USF était déjà utilisée mais ça plante au même endroit. Dans un cas déclarer un String comme nom de UserForm ça marche, pas dans l'autre. Je comprends pas.

Merci d'avance.

Manu

Bonsoir à toutes et tous.

Voici mon soucis: dans le code qui suit tout va bien je mets le nom de la cellule [data!PremLigneT_2_1] dans la variable nomcell

et la ligne d'après je l'utilise tout fonctionne très bien.

Sub Cacher_Afficher_T_2_1()
  Dim PremLigneTab As Integer
  Dim NbLig As Integer
  Dim Position As Range

Set fd = Sheets("data")
Set nomcell = [data!PremLigneT_2_1]

PremLigneTab = nomcell.Offset(1, 0).Value
'
'le reste du code est sans intérêt
'
End Sub

Maintenant je voudrai que le "Set nomcell = [data!PremLigneT_2_1]" soit dans une autre macro sauf que là je bloque sur la déclaration de la variable impossible de trouver ce qu'il faut mettre ... dès que j'appelle cette sous macro Def_Cell_T_2 j'ai des erreurs à la ligne PremLigneTab=nomcell.Offset(1, 0).Value qui fonctionnait très bien sur l'exemple au dessus.

Sub Def_Cell_T_2()
  Dim nomcell As ??????????
Set nomcell = [data!PremLigneT_2_1]
End Sub 

Sub Cacher_Afficher_T_2_1()
  Dim PremLigneTab As Integer
  Dim NbLig As Integer
  Dim Position As Range

Set fd = Sheets("data")

Call Def_Cell_T_2

PremLigneTab = nomcell.Offset(1, 0).Value 
'
'le reste du code est sans intérêt
'
End Sub

Un p'tit coup de main svp ?

Bonjour,

je souhaite utilisé la fonction "select case" avec l'adresse de la cellule active mais je n'y arrive pas.

Voici ce que je fais:

Dim i As Range
Sub Macro1()
'Selection de la feuille
 Sheets("Feuil2").Activate

  i = ActiveCell.Address

 'cas à résoudre'

Select Case i
 Case 1 = "$B$3"
 blablablabla
  case 2= "$B$5"
  blablablabla 

  etc...
 

Là où cela bloque c'est dans la déclaration de ma variable i ,ce ne dois pas être bon car quand je lance le débogueur à cette endroit il me marque i = nothing alors que ActiveCell.adress est bien égale à "$B$3".

Du coup il ne me résout pas mes "cas"

qu'est-ce que je dois mettre? si c'est bon où est-ce que je fais une erreur sinon?

merci

Recherches récentes

cdblcocherdatebaie informatiquemfccopier collercuveriesuivisharepoint vbasupprimer ligne valeur presente colonne precisecombobox fichier fermeecheancier semaineregrouper donnees ongletsrecuperer ongletsrecupererongletongletsregrouper ongletsrechercher valeur criteregrande valeur critere