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 :

usf ouvrir l'onglet correspondant, en tenant compte des doublons [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut usf ouvrir l'onglet correspondant, en tenant compte des doublons
    Bonjour,
    j'ai créé un formulaire de saisie Usf1 qui crée une feuille au nom des 8 premiers caractères du nom de famille saisie.
    S'il y a doublon, le nom de la feuille prend la forme des 8 1ers caractères suivi de 2.
    Parallèlement, une autre Usf2 liste les noms / prénoms.
    la Usf2 est toujours accessible depuis la Usf1 et en cliquant sur un nom de la usf2, la feuille correspondante devient active.
    Mon problème, est qu'en cas de doublon dans la Usf2, si on clique sur le 2ème nom, on active la 1ère feuille du nom et non la 2ème.

    Est-ce quelqu'un peut m'aider svp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub LbxLstCo_Click()
    'active la feuille sélectionnée à partir de la Usf2
        Sheets(Left(LbxLstCo.Value, 8)).Activate
    'Unload Me
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Left(LbxLstCo.Value, 8)).Activate
    Il est clair que si tu ne prends que les 8 premiers caractères, tu ne risques jamais de te référer à la feuille à laquelle tu as ajouté ton 2.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Merci unparia,
    Si, je t'assure cela fonctionne puisque j'ai fait la même chose pour les noms des onglets.
    ce qu'il me faut, c'est un code qui regarde s'il y a des doublons dans la liste et si oui, le 2ème ouvrira la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Left(LbxLstCo.Value, 8) & " 2").Activate

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Salut

    Tu peux t'inspirer de ce qui suit, mais que feras-tu en présence de "triplons"?

    Pour moi, ton approche est caduque et je soupçonne un problème d'organisation de ton classeur et de tes données. Peux-tu expliquer ce que tu souhaites obtenir?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonsoir Pierre,
    Merci de ta réponse.

    Je fais un formulaire de saisie pour adresser des courriers à des clients qui sont au téléphone.
    Donc l'utilisateur saisie les coordonnées du client, puis coche le type de courrier qu'il convient, passe au client suivant, la Usf1 se réinitialise et on recommence.

    Mais il peut arriver que le client demande également qqch pour son conjoint.

    Si l'utilisateur saisie une 2ème fois un même nom, il reçoit un message qui l'informe d'une première saisie et lui fait apparaître la Usf2 avec la liste des Noms / Prénoms, si le prénom est identique l'utilisateur peut annuler sa saisie et repartir sur un autre client (donc réinitialisation), sinon il continu sa saisie.

    Il y a très peu de chance (1/100) pour qu'il y ait un 3ème nom ; je n'ai pas prévu ce cas

    Tu me dis :
    Tu peux t'inspirer de ce qui suit
    il doit manquer la suite ?
    Merci

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Oups... Désolé pour l'oubli du code. L'idée est de parcourir les items de la liste précédant celui sur lequel tu as double-cliqué, et si on trouve un nom identique, c'est qu'on est sur le doublon, sinon c'est qu'on est sur le premier.

    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
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
      Dim Index As Integer
      Dim Value As String
      Dim Found As Boolean
     
      Value = ListBox1.Value
      Index = 0
      Do While Index < ListBox1.ListIndex And Not Found
        If ListBox1.List(Index) = Value Then
          MsgBox "Doublon => " & Left(Value, 8) & "2"
          Found = True
        End If
        Index = Index + 1
      Loop
      If Not Found Then MsgBox "Pas de doublon => " & Left(Value, 8)
     
    End Sub
    Ceci dit, je reste sur mon impression de départ: Il faut organiser les choses autrement, à mon avis, mais il faut voir le volume des données à traiter, notamment, et penser l'organisation du classeur autrement.

    Une piste serait que la listbox soit filtrée sur les noms en fonction de la saisie du début du nom dans un textbox, par exemple, car compter sur le fait qu'il y a peu de chances qu'il y ait des triplons ou des problèmes divers, c'est un peu jouer au VogelPick...

    Comme toujours, c'est d'abord et avant tout de la réflexion sur la conception du classeur, bien avant un problème VBA.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Pierre,

    Sans te passer la brosse à reluire, tu as parfaitement raison dans ton raisonnement d'organisation.
    J'ai pêché en ne demandant pas le volume des courriers...

    Avec ton code, cela fonctionne parfaitement, je vais donc livrer comme ça, mais je vais revoir le pb pour la prochaine version.

    Merci pour ton aide tant sur le fond que sur la forme.

    Au plaisir

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

Discussions similaires

  1. ouvrir l'onglet correspondant à la valeur d'une listbox
    Par jamanu dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/12/2013, 13h39
  2. [SQL] count en tenant compte des missing data
    Par debdev dans le forum SAS Base
    Réponses: 4
    Dernier message: 29/07/2009, 11h22
  3. Réponses: 9
    Dernier message: 06/06/2007, 23h03
  4. Réponses: 6
    Dernier message: 20/02/2007, 10h54
  5. Réponses: 13
    Dernier message: 03/12/2005, 17h09

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