appeler un onglet spécifique ds un classeur ?

G

Guesh

Guest
;) Bonjour à tous !!

Voila, je suis novice en VBA, j'ai suivi pas à pas un exemple de code que j'ai trouvé sur le net et j'ai voulu le réutiliser en le modifiant pour m'entrainer.
Malheureusement comme tout novice j'ai un problème. :eek:

Donc j'ai créer un Userform et à l'intérieur j'ai un Combobox que j'appelle CboOnglet et qui me permet de choisir parmi la liste suivante : Sept; Oct; Nov; Déc; Janv; ou Fév.
A côté de ça j'ai nommé mes 6 onglets du classeur concerné par le code exactement de la même façon, c'est à dire: Sept; Oct; Nov; Déc; Janv; ou Fév, de telle sorte que quand je clic sur une des 6 données de ma CboOnglet, les données (entrées par l'utilisateur)s'inscrivent dans la feuille en question.

J'ai donc codé de la façon suivante :

Private Sub CmdOK_Click()

blablabla....

num = Sheets(CboOnglet.Value).Range('A65536').End(x1Up).Row + 1

Sheets(CboOnglet.Value).Activate

Range('A' & num).Value = TxtTitre.Value
Range('B' & num).Value = TxtOrigine.Value
Range('C' & num).Value = CboTypePlat.Value

End Sub


Tout ca pour dire que mon erreur doit surement venir de Sheets(CboOnglet.Value) , mais je ne vois pas d'autres façons pour appeler une certaine feuille.


Je me rends comptes que c'est assez difficile d'expliquer un problème . Surtout qd on débute. J'espere avoir ete precis.

Merci de bien vouloir m'aider


;)
 

CBernardT

XLDnaute Barbatruc
Bonjour Guesh,

Vite fait, essayes ce code :

Sub macro1()
Dim Num As Long
' Définition de la ligne
Num = Sheets(UserForm1.CboOnglet).Range('A65536').End(xlUp).Row + 1
'Report des valeurs dans le tableau
With Sheets(UserForm1.CboOnglet)
.Range('A' & Num).Value = UserForm1.TxtTitre
.Range('B' & Num).Value = UserForm1.TxtOrigine
.Range('C' & Num).Value = UserForm1.CboTypePlat
End With

End Sub

Cordialement

Bernard
 

coco_lapin

XLDnaute Impliqué
Guesh, j'ai trouvé quelque chose de bizarre, j'ai adapté ton code en placant 'Feuil2' à la place de CboOnglet.Value.
Cela ne fonctionne pas (une erreur 1001 se produit). Par contre la ligne 1 que j'ai saisi à la main fonctionne.
Tu pourrais essayer de supprimer ta ligne et de la resaisir à la main.
Voici l'exemple.

sub es()

'La ligne 1 qui fonctionne
dgfdf = Sheets('Feuil2').Range('A65536').End(xlUp).Row + 1

'la ligne qui ne fonctionne pas
gfhfh = Sheets('Feuil2').Range('A65536').End(x1Up).Row + 1

end sub
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Coco, Bernard, Guesh, le Forum

Par expérience de vieux loup de mer, ou encore de vieux singe à qui on apprend plus à faire des grimaces force d'avoir essayé multitude de barbatrucs... Voici une astuce qui m'enlève bien des 'soucy' quand j'appelle une feuille depuis une ListBox ou une ComboBox:

Au lieu de :
Sheets(CboOnglet.Value).Activate

J'écris toujours :
Sheets(Cstr(CboOnglet.Value)).Activate

En effet le fait de convertir en String la valeur de la ComboBox permettra mieux à VBA de passer un nom d'onglet (même si pourtant logiquement la valeur 'Sept' est bien une String, il vaut mieux forcer avec 'Cstr'...)

Bonne Soirée
[ol]@+Thierry[/ol]
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet