Mauvaise utilisation du if

Bonjour tout le monde,

J'espère pouvoir trouver une solution a mon problème en posant cette question. Mon problème étant que je penses j'utilises mal la fonction If. Mon but est que lorsque j'ouvre mon userform je puisses sélectionner des checkbox qui vont me permettre de supprimer des "ranges". Le soucis est que lorsque je sélectionne plusieurs checkbox une seule "range" est supprimer. Je ne sais pas si je sui clair je vous laisse mon programme pour vous aider je reste à votre disposition pour toute question

Private Sub CommandButton1_Click()
Sheets("Feuil1").Unprotect Password:="faucigny"
  Dim plg$
  If CheckBox1 Then plg = "A2:D2"
  If CheckBox2 Then plg = "A3:D3"
  If CheckBox3 Then plg = "A4:D4"
  If CheckBox4 Then plg = "A5:D5"
  If CheckBox5 Then plg = "A6:D6"
  If CheckBox6 Then plg = "A7:D7"
  If CheckBox7 Then plg = "A8:D8"
  If CheckBox8 Then plg = "A9:D9"
  If CheckBox9 Then plg = "A10:D10"
  If CheckBox10 Then plg = "A11:D11"
  With Worksheets("Feuil2")
    If plg <> "" Then
      .Unprotect "faucigny"
      .Range(plg).Delete 2
      .Protect "faucigny"
    End If
  End With
  End Sub

Bonjour tanguy2604, le forum,

Un essai....à affecter au bouton....

Sub TEST2()
 Dim i As Integer, j As Integer, derlig As Integer

 Application.ScreenUpdating = False                                           'évite le scintillement de l'écran

     With Worksheets("Feuil2")                                                'on agit sur la feuille 2
      .Activate                                                               'affiche la feuille 2 (facultatif)
      For i = 1 To Sheets("Feuil1").OLEObjects.Count                          'boucle sur les checkbox
       If Sheets("Feuil1").OLEObjects("CheckBox" & i).Object.Value Then       'si checkbox cochée
        derlig = .UsedRange.Rows.Count + 1                                    'dernière ligne utilisée de la feuille 2
        'derlig = .Range("A" & Rows.Count).End(xlUp).Row                      'dernière ligne utilisée de la colonne A de la feuille 2
       .Unprotect "faucigny"
        If Application.WorksheetFunction.CountA(.Range("A" & i + 1 & ":D" & i + 1)) = 4 Then .Range("A" & i + 1 & ":D" & i + 1).ClearContents 'si la la ligne correspondant à la checkbox est remplie de A à D, on efface les données
       End If
      Next i

      For j = derlig To 2 Step -1                                             'boucle de la dernière ligne à la ligne 2
       If Application.WorksheetFunction.CountA(.Range("A" & j & ":D" & j)) = 0 Then .Rows(j).EntireRow.Delete  'si aucune donnée de A à D, on supprime la ligne
      Next j
      .Protect "faucigny"
     End With

 Application.ScreenUpdating = True
  End Sub
7classeur1.xlsm (29.06 Ko)

Il y a peut-être moyen de faire plus simple....

Cordialement,

Effectivement ta solution est exactement le fonctionnement que je recherche mais je ne suis pas très bon en VBA je n'arrive pas à adapter ton code. Pourrais tu m'expliquer comment l'inclure à mon projet ?

Bonsoir tanguy2604, le forum,

J'ai pas mal galéré ( je ne suis pas un pro non plus, ) mais je te propose ceci.

Si j'ai bien compris, les données de la feuille1 (colonnes O,P,Q,R) seront toujours semblables aux données de la feuille2 (colonnes A,B,C,D) ?

  • J'ai finalement abandonné l'idée des checkbox et privilégié une listbox à sélection multiple.
  • A l'aide de l'USF 2 , on alimente simultanément les 2 feuilles au moyen de tableaux structurés
  • Avec l'USF 3, on supprime simultanément les lignes des 2 feuilles dont le nom de l'entreprise correspond au(x) choix de la listbox

En espérant que cela te convienne,

Cordialement,

Ah oui alors la c'est exactement ce que je recherchais à faire, je ne pensais pas que l'ont pourrais passer par une ListBox merci beaucoup encore une petite question est-ce que tu sais si il est possible d'ajuster automatiquement la taille de l'USF3 en fonction de la taille de la ListBox (donc du nombre d'entrprise en fait).

Re,

Merci pour ton retour,

est-ce que tu sais si il est possible d'ajuster automatiquement la taille de l'USF3 en fonction de la taille de la ListBox (donc du nombre d'entrprise en fait)

Heu non....mais pourquoi faire ?

Dès que tu dépasse la taille que tu as définie pour ta listbox, une barre de défilement apparait à droite....

capture

Cordialement,

Rechercher des sujets similaires à "mauvaise utilisation"