Problème : La valeur d'une TextBox ne s'insert pas dans la bonne feuille

Bonjour à tous !

2 ème jour sur ce forum et 2ème problème que je rencontre

Je vous joint un fichier simplifié pour illustrer mon problème

Dans la feuille "Choix" en cellule B2 je sélectionne la catégorie et en cellule C2 l'article. Si l'article n'est pas dans la liste, un formulaire apparait pour me demander l'unité et le prix moyen de cette article. Une fois cliqué sur "Ajouter" tout cela est censé s'insérer dans le tableau de la feuille "Listes".

Cela fonctionne pour la catégorie et l'article (Ce qui est logique puisque je n'ai pas conditionné leur insertion à l'Userform) mais pas pour l'unité et le prix. Ils s’insèrent à la bonne place mais dans la feuille Choix au lieu de Listes. Ce qui m'intrigue beaucoup c'est que je ne fais pas du tout référence à la feuille Choix ...

Avez-vous une idée à ce problème ? Je n'arrive pas à comprendre ce que j'ai mal saisie ...

Je vous remercie par avance

Bonjour (et oui encore moi )

Le problème est plutôt simple, quand tu ne précises pas la feuille dans laquelle se trouve un objet Range ou Cells, VBA considère que la feuille dans laquelle se trouve la plage de cellules, ou la cellule, est la feuille active, et donc ta feuille Choix, il faut ici être explicite sur la feuille dans laquelle se trouve ton objet pour utiliser des cellules d'une autre feuille, ton programme deviendra:

Private Sub CommandButton1_Click()
    Dim n As Integer
    If MsgBox(" Confirmez-vous l’insertion de ce nouvel article ? ", vbYesNo, " Demande de confirmation d’ajout ") = vbYes Then
        n = Sheets("listes").Range("c" & Rows.Count).End(xlUp).Row + 1
        Sheets("listes").Range("E" & n).Value = TextBox1
        Sheets("listes").Range("F" & n).Value = TextBox2
    End If
Unload Me
End Sub

Et pour éviter de répéter Sheets("listes") partout, on va utiliser With:

Private Sub CommandButton1_Click()
    Dim n As Integer
    With Sheets("listes")
        If MsgBox(" Confirmez-vous l’insertion de ce nouvel article ? ", vbYesNo, " Demande de confirmation d’ajout ") = vbYes Then
            n = .Range("c" & Rows.Count).End(xlUp).Row + 1
            .Range("E" & n).Value = TextBox1
            .Range("F" & n).Value = TextBox2
        End If
    End With
Unload Me
End Sub

J'ai testé le code et il "marche", dans le sens où ça exporte bien sur la bonne feuille, mais tu recalcules la ligne sur laquelle tu dois exporter tes données après avoir rajouté une ligne à ton tableau, ça décalle les infos des deux premières colonnes en les écrivant sur la ligne suivante visiblement, je te laisse débuguer ça

Bonjour,

il faut spécifie la feuille,

 Sheets("listes").Range("E" & n).Value = TextBox1 
Sheets("listes").Range("F" & n).Value = TextBox2

Merci à vous 2 ! Ca fonctionne

De rien

merci d'avoir passé le sujet en résolu

Rechercher des sujets similaires à "probleme valeur textbox insert pas bonne feuille"