Macro qui ne marche que sur un onglet
Bonjour à tous,
J'ai créé une macro qui me sert à créer un formulaire.
Ce formulaire ajoute des données dans un tableau situé dans l'onglet appelé TEST.
Pour lancer cette macro, j'ai créé un bouton sur un autre onglet, et j'y ai affecté la macro.
Mon problème: quand je lance la macro via l'onglet TEST (que ce soit via le raccourcie Ctrl+Shit+lettre ou via VBA F5) la macro s’exécute correctement et le formulaire marche: les données s'ajoute à mon tableau dans l'onglet TEST.
Cependant, quand je lance la macro via le bouton qui se situe sur un autre onglet, seul le formulaire se lance, mais les données ajoutées dans le formulaire ne sont pas ajoutées au tableau situé dans l'onglet TEST.
Avez-vous une idée du problème?
Merci d'avance!
Bonjour,
à vue de nez et sans fichier exemple..
si tu déclare ta feuille ça devrait aller
set Ws1 = sheets("tafeuilleoùtuveuxdéposerlesdata")
Ws1.cells("A",1) = combobox1.value avec les bonnes coordonnées ("A" , 1) bien sur
Ws1.cells("B",1) = combobox2.value
etc, etc..
P.
Bonjour Egidio, bonjour le forum,
Si ta macro est lancée depuis un bouton dans un onglet qui n'est pas l'onglet TEST, il te faut, dans le code, spécifier le nom de l'onglet chaque fois que tu fais référence à celui-ci. Par exemple le code ci-dessous lancé depuis un CommandButton dans TEST marchera très bien :
Range("A1").Value = Me.TextBox1.Value
Lancé depuis un CommandButton dans autre onglet il te faudra écrire :
Sheets("TEST").Range("A1").Value = Me.TextBox1.Value
Avec le fichier qui va bien on pourra te donner des explications plus précises...
[Édition]
Bonjour Patrick nos posts se sont croisés...
Merci pour vos réponses!
J'ai ajouté Sheets("TEST"). devant Range("A" & L).Value = ComboBox1 comme vous l'avez suggéré et surprise, ça marche!
Juste pour info du coups, voici mon code:
Option Explicit
Dim Ws As Worksheet
'Formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'Choose the brand
ComboBox2.List() = Array("Schneider Electric", "Bender")
Set Ws = Sheets("TEST") 'On the sheet call TEST
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 7
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
'Choose the product
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 7
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub
Private Sub UserForm_Click()
End Sub
'Add new product button
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox(" Do you want to add a new device ? ", vbYesNo, " Validate ") = vbYes Then
L = Sheets("TEST").Range("a65536").End(xlUp).Row + 1 'add something on the 1st empty row on the sheet TEST
Sheets("TEST").Range("A" & L).Value = ComboBox1
Sheets("TEST").Range("B" & L).Value = ComboBox2
Sheets("TEST").Range("C" & L).Value = TextBox1
Sheets("TEST").Range("D" & L).Value = TextBox2
Sheets("TEST").Range("E" & L).Value = TextBox3
Sheets("TEST").Range("F" & L).Value = TextBox4
Sheets("TEST").Range("G" & L).Value = TextBox5
Sheets("TEST").Range("H" & L).Value = TextBox6
Sheets("TEST").Range("I" & L).Value = TextBox7
End If
End Sub
'For the modification button
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox(" Do you want to modify this device ? ", vbYesNo, " Validate ") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For I = 1 To 7
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub
'For the cancel button
Private Sub CommandButton3_Click()
Unload Me
End Sub
Cordialement,
Re,
Tu pouvais même remplacer partout Sheets("TEST") par Ws puisque tu as déclaré Ws au niveau module.