IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA Excel] problème de sélection de feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut [VBA Excel] problème de sélection de feuilles
    Bonjour à tous,

    Nouveau sur ce forum, je fais appel à vous pour m'aider à résoudre mon problème que voila:
    J'ai crée dans un formulaire une TextBox dans laquelle je doit rentrer la réf. d'un produit et lorsque je valide ma saisie, Excel me crée automatiquement une nouvelle feuille nommée du texte que j'ai saisi.
    Ca, ça fonctionne correctement.
    Par contre, lorsque je saisi une réf. déjà existante, je voudrait qu'Excel me sélectionne la feuille correspondante, et ça, je n'arrive pas à y parvenir.

    Quelqu'un aurait-il une idée SVP ?

    D'avance merci pour votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Bonjour,

    Le principe a utiliser dans ce cas: tu lui dis de selectionner la feuille sheets(reference), et s'il ne peut pas alors tu la crees (et non pas l'inverse comme tu as fait).

    Voila l'exemple utilise dans la FAQ gestion d'erreur, tu adaptes et ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub laMacro()
        Dim Ws As Worksheet
     
        'Evite le message d'erreur si la feuille n'existe pas.
        On Error Resume Next
        Set Ws = ThisWorkbook.Worksheets("NomFeuille")
        On Error GoTo 0
     
        '(Ws = Nothing quand l'objet attribué à la variable n'existe pas)
        If Not Ws Is Nothing Then
            MsgBox "La feuille existe dans le classeur."
            Else
            MsgBox "La feuille n'existe pas dans le classeur."
        End If
    End Sub

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci Tontonfred,

    Il est vrai que c'est peut-être la solution.
    Je vais essayer d'adapter ce code à mon projet et je te tiens au courant.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Voilà, j'ai essayé mais ça coince quelque part, quand je saisis une réf.,donc feuille, déjà existante.
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     Private Sub CommandButton1_Click()
    Dim Ws As Worksheet
     Dim nom As String
     nom = TextBox1.Value
        'Evite le message d'erreur si la feuille n'existe pas.
        On Error Resume Next
        Set Ws = ThisWorkbook.Worksheets("nom")
        On Error GoTo 0
        '(Ws = Nothing quand l'objet attribué à la variable n'existe pas)
        If Ws Is Nothing Then
            Sheets.Add.Name = nom
            Else
            Sheets("nom").Select
        End If
    Sheets("listmoul").Range("a65536").End(xlUp).Offset(1, 0).Value = nom
    Sheets("listmoul").Select
        Columns("A:A").Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Range("A1").Select
    End Sub
    Je suis sur que je fais une grosse erreur, mais ou ??

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    La ligne où se produit l'erreur est surlignée en jaune. Ensuite, tu as un message d'erreur. Quel est-il ? Et précise la ligne

    edit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set Ws = ThisWorkbook.Worksheets(nom)
    "Nom" est une variable, tu ne dois pas mettre de guillemet.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    J'ai un message d'"erreur d'execution 1004", impossible de renommer une feuille comme une autre feuille...

    L'erreur se produit à cette ligne:

    Merci pour l'aide!

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok, en fait t'as tout faux. Teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Ws As Worksheet
     Dim nom As String
     nom = TextBox1.Value
        'Evite le message d'erreur si la feuille n'existe pas.
        On Error Resume Next
        Set Ws = ThisWorkbook.Worksheets(nom)
        On Error GoTo 0
        '(Ws = Nothing quand l'objet attribué à la variable n'existe pas)
        If Ws Is Nothing Then
            Set Ws = Sheets.Add
            Ws.Name = nom
            Else
            Ws.Select
        End If
    A+

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Effectivement, j'avais tout faux !!! mais quand on débute, on est content de trouver de l'aide !
    Ton code fonctionne bien, mais lorsque je saisis une réf. déjà existante, il me l'ajoute à nouveau dans ma feuille "listmoul" , col A alors qu'elle est déja présente. De plus, je perds la selection automatique de la feuille sur laquelle je veux me trouver (a créer ou déjà existante).

    En tout cas, merci pour ton aide précieuse!

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quand tu ajoutes une feuille, elle devient la feuille active. Ça c'est pour tépondre à ton "observation"
    De plus, je perds la selection automatique de la feuille sur laquelle je veux me trouver (a créer ou déjà existante).
    Là je ne comprends pas car tu mets plus bas
    Sheets("listmoul").Select
    Avec ce code, tu dois te retrouver sur la feuille "listmoul"
    Enfin
    Ton code fonctionne bien, mais lorsque je saisis une réf. déjà existante, il me l'ajoute à nouveau dans ma feuille "listmoul" , col A alors qu'elle est déja présente.
    Là je n'ai pas ton code par lequel tu écris le nom de ta feuille... alors...
    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    OK, génial !!!
    Mon pb est résolu, merci à tous, je vous joins la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Dim Ws As Worksheet
     Dim nom As String
     nom = TextBox1.Value
        'Evite le message d'erreur si la feuille n'existe pas.
        On Error Resume Next
        Set Ws = ThisWorkbook.Worksheets(nom)
        On Error GoTo 0
        '(Ws = Nothing quand l'objet attribué à la variable n'existe pas)
        If Ws Is Nothing Then
            Set Ws = Sheets.Add
            Ws.Name = nom
            Sheets("listmoul").Range("a65536").End(xlUp).Offset(1, 0).Value = nom
    Sheets("listmoul").Select
        Columns("A:A").Select
        Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Range("A1").Select
        Ws.Select
          Else
            Ws.Select
            End If
    J'espère qu'elle servira à d'autres !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA Excel - Problème de password VBA
    Par sat478 dans le forum VBA Word
    Réponses: 5
    Dernier message: 11/01/2006, 17h38
  2. [VBA] Problème de sélection de feuille
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2005, 10h44
  3. [VBA Excel] différentes plages sur différentes feuilles
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 30/11/2005, 13h41
  4. [VBA EXCEL] Problème d'éxécution avec graphiques
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2005, 09h55
  5. [VBA Excel] problème de range avec find
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo