Macro designer objet avec numéro de ligne
Bonjour,
Voila mon probleme, sur un fichier de 500 ligne avec chacune des radiobuttons de type OUIxx NON xx SOxx, je masque des lignes en fonction dun critère sur la ligne B
J'aimerais que lorsque je masque une ligne les 3 radiobutton associé se masque également.
For each cell in selection
if cell.value = "1" then
cell.Entirerow.hidden = true
Radionbutton("OUIxx").visible = false
Radionbutton("NONxx").visible = false
Radionbutton("SOxx").visible = false
next cell
voila l'esprit, xx repésente la ligne et radiobutton est framesharp il me semble, mais la n'est pas le problème, je veux juste le moyen de désigner ces objets avec le numéro de la ligne que l'on masque pour qu'il se masque également,
Merci pour votre aide ,
James
Bonjour,
essaie
For Each cell In Selection
If cell.Value = "1" Then
cell.EntireRow.Hidden = True
With ActiveSheet
.Shapes("OUI" & cell.Row).Visible = False
.Shapes("NON" & cell.Row).Visible = False
.Shapes("SO" & cell.Row).Visible = False
End With
End If
Next cellBonjour Maths, encore une fosi ca fonctionne parfaitement !!
Je te remercie pour ton aide!
Juste une tite explication : que signifie shapes (selection de tous les objets?ou uniquement des contrôle?)
A quoi sert le &, ça signifie associé? et? (Je comprendrais parfaitement que tu ne réponde pas étant donné que les réponses sont sur le net, mais je n'arrive pas a saisir la notion de ce &)
et dernière question,
For Each cell In Selection
If cell.Value = "1" Then
cell.EntireRow.Hidden = True
With ActiveSheet
on error resume next
.Shapes("OUI" & cell.Row).Visible = False
.Shapes("NON" & cell.Row).Visible = False
.Shapes("SO" & cell.Row).Visible = False
End With
J'ai rajouter un "on error resume next" car le So n'est pas forcément sur toutes les lignes, sur mes tests tout fonctionne parfaitement, y a t il un risque que je sois embeter par la suite a cause de ca??
Merci pour ton aide !!!
James
- la collection shapes comprend tous les objets de la feuille de calcul, boutons, controles, dessins, etc... pour acceder à un controle comme dans ton cas, tu peux utiliser shapes(NomDuControle).
- Le & sert à concaténer ( à ajouter a la suite ) deux valeurs.
- Pour le on error, ça va fonctionner. Par contre tu l'utilises pour masquer une erreur que tu sais qui va se produire. Tu serait mieux de tester si le controle existe avant de le rendre invisible et de garder la gestion des erreurs au "vrai" erreur qui risque de se produire. En utilisant Resume Next de cette tu n'as pas moyen de savoir si l'erreur est du au controle inexistant ou bien si elle est provoqué par autre chose. Ex de code avec test des controles et gestions d'erreur:
Public Sub Test()
On Error GoTo GestionErreur
For Each cell In Selection
If cell.Value = "1" Then
cell.EntireRow.Hidden = True
With ActiveSheet
For i = 1 To .Shapes.Count
MsgBox .Shapes(i).Name
If .Shapes(i).Name = "OUI" & cell.Row Then .Shapes(i).Visible = False
If .Shapes(i).Name = "NON" & cell.Row Then .Shapes(i).Visible = False
If .Shapes(i).Name = "SO" & cell.Row Then .Shapes(i).Visible = False
Next i
End With
End If
Next cell
Exit Sub
GestionErreur:
MsgBox "Une erreur est survenue: " & Err.Description
Resume Next
End SubOk merci pour les précisions !!!
Je vais appliquer ca !!
Merci !!
James