Formule "Range"

Bonjour,

J'ai suivi une vidéo sur YouTube pour créer un QCU.

Recopiant exactement ce qui est visible sur la vidéo, je me retrouve avec un message d'erreur sur un module.

Voici la ligne de code utiliser pour mon UserForm et en dessous, celle de mon module.

Si quelqu'un peut m'aider à trouver la solution :)

UF

Option Explicit

Private Sub ComboBox_Jour_Change()
Init_day

End Sub

Private Sub UserForm_click()

End Sub

Private Sub UserForm_Initialize()
Dim MaFeuille As Worksheet
Image_Tot.Width = 0
Image_Ok.Width = 0
Image_Faux.Width = 0
Image_repFaux.Visible = False
Image_repVrai.Visible = False

For Each MaFeuille In Worksheets
If MaFeuille.Name <> "Quiz" Then
ComboBox_Jour.AddItem MaFeuille.Name
End If
Next

OptionA.Visible = False
OptionB.Visible = False
OptionC.Visible = False
OptionD.Visible = False

CommandButton_next.Visible = False


End Sub

MODULE

Option Explicit
Dim Feuille As String

Sub Init_day()
Dim i As Integer
With UF_Quiz
Feuille = .ComboBox_Jour
i = Range(Feuille & "!A1").End(xlDown).Row
Range(Feuille & "!G2:G" & i).Clear

End With

End Sub

Le message d'erreur apparait pour cette ligne sous la forme suivant :

Erreur d'exécution '1004':

La méthode 'Range' de l'ojet '_Global' a échoué

Merci d'avance pour tout conseil que je pourrais recevoir.

++++

Bonjour

Au lieu de : i = Range(Feuille & "!A1").End(xlDown).Row

Essayer

i = Sheets(Feuille).Range("A1").End(xlDown).Row

Merci de votre réponse.

En essayant votre ligne de code, un message d'erreur apparait :

Erreur d'exécution '9':

L'indice n'appartient pas à la sélection.

Je peux vous partager le fichier si vous souhaitez.

Vous remerciant

Bonjour & bienvenue,

Tu dois mettre le nom de la feuille entre guillemets (comme l'adresse de la cellule). Par exemple pour la feuille nommée "Feuille 1", tu écrirais

i = ThisWorkbook.Worksheets("Feuille 1").Range("A1").End(xlDown).Row

Si tu as encore d'autres erreurs, merci de partager le fichier oui

EDIT : as-tu bien sélectionné la feuille dans le combobox avant de lancer la macro ?

@saboh12617

Bonjour à toi et merci de l'accueil,

Ma ComboBox me sert à sélectionner jusqu'à 30 feuilles différentes (1 par jour sur un mois) et chaque feuille du classeur (hormis la première qui est la page principal de mon QCU) se nomme par un numéro (1, 2, 3, ......,30).

Je te partage le fichier si tu veux y jeter un œil, ça sera probablement plus parlant pour toi.

Je n'arrive pas à ajouter le fichier :(

Cliquez ici ou glissez-déposez le fichier. Si ça ne fonctionne pas c'est qu'il est trop lourd. Auquel cas faites une copie dans laquelle vous supprimez toutes les pages sauf, disons les 3 premières, et essayez de nouveau.

image

J'ai supprimé 27 pages.

7chef-de-poste.zip (39.69 Ko)

Merci,

Ci-après votre code corrigé. Le vrai problème c'était vos espaces dans l'adresse des cellules, il ne faut pas en mettre (comme dans les formules on écrit "G2:G5" pas "G2 : G5 ").

Sub Init_day()
    Dim i As Integer
    With UF_Quiz
        Feuille = .ComboBox_Jour
        i = ThisWorkbook.Worksheets(Feuille).Range("A1").End(xlDown).Row
        ThisWorkbook.Worksheets(Feuille).Range("G2:G" & i).Clear
    End With
End Sub

Bonne journée

J'ai effectué la correction comme écrit dans votre message et la valeur de i est toujours de 0.

Et toujours un message d'erreur d'exécution '9' m'indiquant que l'indice n'appartient pas à la sélection.

J'imagine que vous avez des feuilles complètement vides. Essayez ceci ?

Sub Init_day()
    Dim i As Integer
    With UF_Quiz
        Feuille = .ComboBox_Jour
        i = worksheetfunction.Max(2, ThisWorkbook.Worksheets(Feuille).Range("A1").End(xlUp).Row+1)
        ThisWorkbook.Worksheets(Feuille).Range("G2:G" & i).Clear
    End With
End Sub

Sinon.... C'est qu'il y a un problème avec votre combobox qui ne contiendrait pas le nom de la feuille, mais c'est bizarre car le reste du code l'initialise correctement.

bonjour Major_85, salut saboh12617,

un essai et des feuilles avec des valeurs "integer" sont dangeureuses, il faut les convertir en string

Sub Init_day()
6chef-de-poste.xlsm (40.72 Ko)
     Dim i     As Integer
     With UF_Quiz.ComboBox_Jour              'ce combobox de l'userform
          If .ListIndex <> -1 Then           'on a choisi quelque chose
               With Sheets(CStr(.Text))      'la feuille choisie (mais convertir en string !!!, parce qu'on a des feuilles avec des noms numériques)
                    i = .Range("A1").End(xlDown).Row     'index de la dernière ligne
                    .Range("G2:G" & i).ClearContents     'RAZ la colonne G
               End With
               .Text = ""
          End If
     End With
End Sub

@Saboh12617

Chaque feuille est composé d'un questionnaire de 5 questions avec 4 réponses possibles par questions.

@BsAlv

En fonction permanente (je sais pas si on utilise ce terme là) dans mon module, il est indiqué :

Option explicit

Dim Feuille as string

Cela ne correspond pas à une conversion en string sur l'ensemble des feuilles concernées par le module ??

Je vais essayé vos lignes de code et reviendrait vers vous à l'issue.

Vous remerciant

Rechercher des sujets similaires à "formule range"