XL 2019 l'indice n'appartient pas à la sélection

  • Initiateur de la discussion Initiateur de la discussion farid
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

farid

XLDnaute Occasionnel
Bonsoirs à vous tous,
j'ai un petit souci avec cette macro.
Je m'explique, cette macro fonctionne vraiment si je laisse les lignes "'Unload UserForm1" et "'UserForm1.Show" fonctionnelle.
Cependant, lorsque je désactive ces 2 lignes à partir d'un bouton sur un userform , j'ai un souci sur la ligne Sheets(CStr(Cells(19 + i, 1))).Delete.
Est-ce possible que la macro puisse fonctionner sans ces deux lignes "'Unload UserForm1" et "'UserForm1.Show" sur un sheets qui se nomme "Résultat".



Private Sub CommandButton2_Click()
'Unload UserForm1
Application.DisplayAlerts = False
For i = 1 To 12
If Cells(19 + i, 4) = "a" And Not Me.Controls("CheckBox" & i) Then
' On Error Resume Next
Sheets(CStr(Cells(19 + i, 1))).Delete
' On Error GoTo 0
Cells(19 + i, 1).ClearContents
Cells(19 + i, 4).ClearContents
Cells(19 + i, 7).ClearContents
End If
Next
Application.DisplayAlerts = False
UserForm_initialize
'UserForm1.Show
End Sub

par avance , merci
 
Bonjour,

Vous ne pouvez pas fermer votre userform si vous utilisez un de ses contrôles (CheckBox) dans le code :
VB:
If Cells(19 + i, 4) = "a" And Not Me.Controls("CheckBox" & i) Then

Pour vous affranchir du userform, il vous faut mémoriser dans une matrice, via une boucle, les valeurs I pour lesquelles le code doit supprimer l'onglet.
 
Dernière édition:
Bonjour le forum,
Est-ce possible que la macro puisse fonctionner sans ces deux lignes "'Unload UserForm1" et "'UserForm1.Show"
J'ai testé et il n'y a pas de problème quel que soit le mode d'ouverture de l'UserForm.

Bien sur il faut que Cells(19 + i, 1) ne soit pas vide et que la feuille portant ce nom existe.

Que fait la macro UserForm_Initialize ?

A+
 
Bonsoir @farid
c'est Quoi ce code?
VB:
Private Sub CommandButton2_Click()
'Unload UserForm1
Application.DisplayAlerts = False
For i = 1 To 12
If Cells(19 + i, 4) = "a" And Not Me.Controls("CheckBox" & i) Then
' On Error Resume Next
Sheets(CStr(Cells(19 + i, 1))).Delete
' On Error GoTo 0
Cells(19 + i, 1).ClearContents
Cells(19 + i, 4).ClearContents
Cells(19 + i, 7).ClearContents
End If
Next
Application.DisplayAlerts = False
UserForm_initialize
'UserForm1.Show
End Sub

1° on ne unload pas avant le reste du code sinon il ne s'execute pas sur certaines version d'ecel , ou génère une erreur d'indice

2° certaines version d'excels (va savoir pour quoi) n’aiment pas l'implicite il faut tester le .value du checkbox explicitement

3° rappeler le initialise est digne d'un débutant
on place le code dans une sub et on l'appelle du initialise et du bouton

bref je suppute que tu veuille réinitialiser ton userform et tes controls vidés sans fermer le userform
c'est bien ca ?

4°et pour finir tu supprime tes feuille dans une boucle croissant
la bonne blague dès le premier délétéet en plus les cellule effacées 😉 🤣


la règle d'or massif 18 cara quand on supprime ou vide des cellules on le fait a reculons
 
Dernière édition:
Bonjour le forum,
la règle d'or massif 18 cara quand on supprime ou vide des cellules on le fait a reculons
Des cellules sans doute mais pas forcément pour des feuilles :
VB:
Sub Spprimer()
Dim sh As Object
Application.DisplayAlerts = False
For Each sh In Sheets
    If sh.Name Like "A*" Then sh.Delete
Next
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
241
Réponses
3
Affichages
665
Retour