Vba erreur 9
mushubdd
Messages postés
5
Statut
Membre
-
mushubdd Messages postés 5 Statut Membre -
mushubdd Messages postés 5 Statut Membre -
Bonjour,
je suis très novice en vba et voudrait créer un formulaire de saisie automatique des données dans excel pour simplifier le travail de mes prestataires.
je suis pas à pas un Tutorial de création mais suis bloqué par l'apparition d'une erreur code 9
voici les premières lignes de mon code
j'ai 9 champs à remplir: 7 avec des" listes déroulantes", et deux "texte"
avec l'outil débogage tout va bien jusqu'à la ligne "set Ws=Sheets ("sheet1)
Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub Userform_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'pour la liste déroulante Center
Set Ws = Sheets("sheet1")
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 2
Me.Controls("textbox" & I).Visible = True
Next I
End Sub
Private Sub ComboBox1_Change()
ComboBox1.ColumnCount = 2 'pour la liste déroulante Country Code
ComboBox1.List() = Array("", "33", "39", "49")
End Sub
Private Sub combobox3_change()
ComboBox3.ColumnCount = 3 'pour la liste déroulante Patient
ComboBox3.List() = Array("", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010")
End Sub
Private Sub combobox4_change()
ComboBox4.ColumnCount = 4 'pour la liste des Visites
ComboBox4.List() = Array("", "V-1M-1", "V1M0", "V2M1", "V3M2", "V4M3")
End Sub
Private Sub combobox5_change()
ComboBox5.ColumnCount = 7 'pour la liste des types d'échantillons
ComboBox5.List() = Array("", "Culot_Sec", "PBMC", "Plasma", "Serum")
End Sub
Private Sub combobox6_change()
ComboBox6.ColumnCount = 8 'pour la liste des centres d'envoi
ComboBox6.List() = Array("", "B&C", "Immune_Health")
End Sub
puis vous solliciter pour un peu d'aide?
merci d'avance du temps que vous m'aurez consacré.
Arnaud
je suis très novice en vba et voudrait créer un formulaire de saisie automatique des données dans excel pour simplifier le travail de mes prestataires.
je suis pas à pas un Tutorial de création mais suis bloqué par l'apparition d'une erreur code 9
voici les premières lignes de mon code
j'ai 9 champs à remplir: 7 avec des" listes déroulantes", et deux "texte"
avec l'outil débogage tout va bien jusqu'à la ligne "set Ws=Sheets ("sheet1)
Option Explicit
Dim Ws As Worksheet
'Pour le formulaire
Private Sub Userform_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'pour la liste déroulante Center
Set Ws = Sheets("sheet1")
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 2
Me.Controls("textbox" & I).Visible = True
Next I
End Sub
Private Sub ComboBox1_Change()
ComboBox1.ColumnCount = 2 'pour la liste déroulante Country Code
ComboBox1.List() = Array("", "33", "39", "49")
End Sub
Private Sub combobox3_change()
ComboBox3.ColumnCount = 3 'pour la liste déroulante Patient
ComboBox3.List() = Array("", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010")
End Sub
Private Sub combobox4_change()
ComboBox4.ColumnCount = 4 'pour la liste des Visites
ComboBox4.List() = Array("", "V-1M-1", "V1M0", "V2M1", "V3M2", "V4M3")
End Sub
Private Sub combobox5_change()
ComboBox5.ColumnCount = 7 'pour la liste des types d'échantillons
ComboBox5.List() = Array("", "Culot_Sec", "PBMC", "Plasma", "Serum")
End Sub
Private Sub combobox6_change()
ComboBox6.ColumnCount = 8 'pour la liste des centres d'envoi
ComboBox6.List() = Array("", "B&C", "Immune_Health")
End Sub
puis vous solliciter pour un peu d'aide?
merci d'avance du temps que vous m'aurez consacré.
Arnaud
A voir également:
- Vba erreur 9
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
3 réponses
Bonjour
Si tu n'as aucune feuille qui se nomme Sheet1 cela provoque l'erreur indice n'appartenant pas à la selection
Cdlmnt
Si tu n'as aucune feuille qui se nomme Sheet1 cela provoque l'erreur indice n'appartenant pas à la selection
Cdlmnt
Merci. je vais modifier en fonction.
D'autre part j'aurai deux autres points à éclaircir:
1. est-il possible de mettre des alertes lorsque toutes les informations du formulaire ne sont pas remplies?
2. les enregistrements peuvent-ils être multiples à partir d'une même entrée dans le formulaire? je l'explique, si j'ai 6 données identques en termes de centre, patient, type de prélèvement... le formulaire peut-il,partir d'un item nombre de tubes (renseigné avec la donnée 6) me créer 6 lignes comportant les informations du formulaire et une incrémentation (tube1, tube2,tube3....)
merci de votre aide.
arnaud
D'autre part j'aurai deux autres points à éclaircir:
1. est-il possible de mettre des alertes lorsque toutes les informations du formulaire ne sont pas remplies?
2. les enregistrements peuvent-ils être multiples à partir d'une même entrée dans le formulaire? je l'explique, si j'ai 6 données identques en termes de centre, patient, type de prélèvement... le formulaire peut-il,partir d'un item nombre de tubes (renseigné avec la donnée 6) me créer 6 lignes comportant les informations du formulaire et une incrémentation (tube1, tube2,tube3....)
merci de votre aide.
arnaud
Bonjour
1) Au début du code associé au bouton valider du formulaire tu peux faire faire une boucle FOR NEXT sur tous les controls de l'userform et si un est vide faire afficher par msgbox un message et sortir de la Sub sans rien faire
2) Faisable aussi :
Là aussi avec une boucle FOR NEXT de 1 au nombre de tubes renseignés, ex :
n=me.textbox 5.value 'en supposant le nombre de tubes entrée dans ce textbox
for x=1 to n
Sheets("Feuil1).range("B" & 4+x).value ="tube "& x 'Inscription dans la Feuille 1 à partir de B5
Sheets("Feuil1).range("C" & 4+x).value = me.combobox1.value ' et de C5
next x
Par contre tu aurais intérêts dans la fentre propriété^de l'éditeur pour d'attribuer à chaque combobox et textbox un nom spécifique qui sera utilisié après dans les macros; c'est plus clair dans la macro s'il y a me.center au lieu de me.combobox1
Cdlmnt
1) Au début du code associé au bouton valider du formulaire tu peux faire faire une boucle FOR NEXT sur tous les controls de l'userform et si un est vide faire afficher par msgbox un message et sortir de la Sub sans rien faire
2) Faisable aussi :
Là aussi avec une boucle FOR NEXT de 1 au nombre de tubes renseignés, ex :
n=me.textbox 5.value 'en supposant le nombre de tubes entrée dans ce textbox
for x=1 to n
Sheets("Feuil1).range("B" & 4+x).value ="tube "& x 'Inscription dans la Feuille 1 à partir de B5
Sheets("Feuil1).range("C" & 4+x).value = me.combobox1.value ' et de C5
next x
Par contre tu aurais intérêts dans la fentre propriété^de l'éditeur pour d'attribuer à chaque combobox et textbox un nom spécifique qui sera utilisié après dans les macros; c'est plus clair dans la macro s'il y a me.center au lieu de me.combobox1
Cdlmnt