Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…