pbm avec if

  • Initiateur de la discussion arno
  • Date de début
A

arno

Guest
bonjour
j ai un probleme avec l operateur if. je n'arrive pas a poser 2 conditions. je souhaite eliminer les comboboxes qui n ont pas de nom particulier:


Dim combb As Object

With ActiveSheet
For i = .Shapes.Count To 1 Step -1
Set combb = .Shapes(i)
If Not combb.Name= 'el_type' & i Or 'mesh_type' Then combb.Delete
Next i
End With

que dois je faire. merci d'avance
 

Hervé

XLDnaute Barbatruc
re arno

je te donnes une macro, pour effacer des graphiques, et tu penses pouvois l'utiliser pour effacer des cbx placés sur une feuille, tu doutes de rien :)

essayes comme ceci :


Dim ctrl As OLEObject
Dim i As Integer


With ActiveSheet
       
For i = .OLEObjects.Count To 1 Step -1
               
Set ctrl = .OLEObjects(i)
               
If Not ctrl.Name = 'el_type' And Not ctrl.Name = 'mesh_type' Then
                        ctrl.Delete
               
End If
       
Next i
End With


parcontre, j'espère que sur ta feuille il n'a q que des combobox ?

salut
 

vekmort

XLDnaute Occasionnel
Bonjour,

Je suis béat face au 2 noms suivants : 'el_type' & i Or 'mesh_type' ! Qu'est-ce que cela signifie... C'est un nom générique pour les objets de la feuille ?

Sinon, pour deux conditions avec 'Or' au milieu, il faut peut-être rajouter :

If Not combb.Name= 'el_type' & i Or Not combb.Name= 'mesh_type' Then...

Bonne continuation,

vekmort
;)
 
A

arno

Guest
rebonjour
je n'arrive pas a faire marcher le code. le code efface toutes les combobox. j ai tenté d'incrémenté dans l'ordre croissant mais cela ne marche pas car alors il saute certanes boites.
est ce que cela pourrait etr du a la definition du delete.
merci d'avance
 

Hervé

XLDnaute Barbatruc
re arno

tous les codes que je donne sur le forum sont testés (sinon, je le précise).

donc ce code fonctionne au regard de ma compréhension du problème, pourrais-tu nous fournir un exemple d'une de tes feuilles contenant les combobox.

salut :)
 
A

arno

Guest
VOICI MON FICHIER. je ne peux pas vous envoyé autre chose l'espace disponible est insuffisant et si je le depouille il ne veut plus rien dire. je ne sais pas si vous pourrez en tiré quelques chose.




Sub mesh_type_Change()

If mesh_type.Value = 'constant elements length' Then

Sheets('special parameters').Select
Sheets('special parameters').Range('B26:G46').Value = ' '
Sheets('special parameters').Range('B26:G46').Select
Selection.Delete Shift:=xlUp
Sheets('special parameters').Select


Dim ctrl As OLEObject
With ActiveSheet
For i = .OLEObjects.Count To 1 Step -1
Set ctrl = .OLEObjects(i)
If Not ctrl.Name = 'el_type' Then
ctrl.Delete
End If
Next i
End With


Sheets('meshing').Visible = True
Sheets('meshing').Select
Sheets('meshing').Range('B12:E22').Copy
Sheets('special parameters').Select
Range('B12:E22').Select
ActiveSheet.Paste

Else
Sheets('special parameters').Select
Sheets('special parameters').Range('B26:G46').Value = ' '
Sheets('special parameters').Range('B26:G46').Select
Selection.Delete Shift:=xlUp


End If

End Sub
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Arno, Vekmort, Hervé, bonsoir à toutes et à tous :)

Puisque Hervé ne semble pas revenir, je me permets de te proposer ce code (je pense qu'il ne m'en voudra pas ;) :

Sub mesh_type_Change()
'
Dim ctrl As OLEObject
Dim i As Integer
'

  Sheets('special parameters').Select
  Range('B26:G46').Delete Shift:=xlUp

  If mesh_type.Value = 'constant elements length' Then

    With ActiveSheet
      For i = .OLEObjects.Count To 1 Step -1
        Set ctrl = .OLEObjects(i)
        If Not Left(ctrl.Name, 7) = 'el_type' Then
          ctrl.Delete
        End If
      Next i
    End With

    With Sheets('meshing')
      .Visible = True
      .Range('B12:E22').Copy _
            Sheets('special parameters').Range('B12:E22')
    End With
  End If

End Sub

Tiens nous au courant.

A+ ;)
 
A

arno

Guest
je suis desole mais ca ne marche toujours pas. meme si je n y connais pas grand chose je n ai pas l impression que le probleme vienne de vos code. lorsque j execute mon code toutes les comboboxes sont elimine meme 'el_type' celle qu on veut garder. je pense que j n'arrive pas a les renommer.que je les renomme en utilisant le bouton propriete ou en passant par le vba cela ne marche jamais.
je vous remercie quand meme pour vos effort. a plus
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde


merci charly

arno, en pièce jointe, un fichier comprenant 5 combobox, les deux premieres ont été renommées : 'el_type' et 'mesh_type'.

en appuyant sur le bouton qui déclenche la premiere macro que je t'ai donné, seuls les 3 dernieres combobox sont supprimées.

Est ce que ceci pourrait t'aider ?

sinon, peux tu simplement nous placer en pièce jointe, un fichier ne comprennant que tes controles et en nous disant ceux que tu veux supprimer.

salut [file name=arno_20060404111331.zip size=7533]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/arno_20060404111331.zip[/file]
 

Pièces jointes

  • arno_20060404111331.zip
    7.4 KB · Affichages: 13

Discussions similaires

Réponses
6
Affichages
343

Statistiques des forums

Discussions
312 492
Messages
2 088 908
Membres
103 982
dernier inscrit
krakencolas