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 :

Problème de lancement avec un TreeView sur un onglet différent


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    CFA
    Inscrit en
    Février 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2016
    Messages : 16
    Par défaut Problème de lancement avec un TreeView sur un onglet différent
    Bonsoir à tous et avant tout un grand merci à tous ceux qui prenne le temps de nous répondre, je fais mes premier pas avec le VBA en fouinant et en compilant... mais la je suis tombé sur un os et je ne trouve pas.

    J'ai un TreeView dans un usf qui marche parfaitement et que j'arrive à exploiter mais le problème et que je ne peux pas le lancer si je ne suis pas dans l'onglet ou se situe mes données.

    Mes données sont sur feuil3 et je voudrai pouvoir le lancer lorsque je suis sur feuil4
    Le problème doit venir des déclarations dans général (les 2 premières lignes) mais je ne sais pas comment faire

    Merci pour votre aide

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Dim tw As MSComctlLib.TreeView
    Dim Tbl, n
    Private Sub UserForm_Initialize()
     
    'Renseigne le TreeView
            With Feuil3
                Tbl = Range("A2:N" & [A65000].End(xlUp).Row).Value
                pere = "0"
                nomPere = Application.VLookup(pere, Tbl, 2, False)
                Set tw = Me.MonArbre
                n = UBound(Tbl)
                tw.Nodes.Add(, , "NoeudMat" & pere, nomPere).Expanded = False ' Racine arbre
                Fils pere
             End With
     
     
    'Renseigne la Listbox "Catégorie"
            With Me.Catégorie
                Catégorie.AddItem "Matériau"
                Catégorie.AddItem "Matériel"
                Catégorie.AddItem "Main d'Oeuvre"
            End With
     
     
    'Renseigne la Listbox "Unité"
            With Me.Unité
                t = Feuil3.Range("P2:P" & Range("P65536").End(xlUp).Row)
                Unité.List = t
            End With
     
    'Met le focus sur le Textbox
            With Code2
                .SetFocus
                .SelStart = 0
                .SelLength = Len(Code2.Text)
            End With
     
            Code2.AutoTab = True
     
     
    End Sub
    Merci Beaucoup

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    à ton avis à quoi sert le With?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Feuil3
               Tbl = .Range("A2:N" & [A65000].End(xlUp).Row).Value
    Bien que dans ton cas il n'est pas très utile, au moins pour ça!

  3. #3
    Membre averti
    Homme Profil pro
    CFA
    Inscrit en
    Février 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2016
    Messages : 16
    Par défaut
    Bonjour,
    effectivement il ne sert à rien je l'ai rajouté au cas ou... Mais les déclarations sont avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tw As MSComctlLib.TreeView
    Dim Tbl, n

  4. #4
    Invité
    Invité(e)
    Par défaut
    peut importe car ton astroblème est là!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Feuil3
                Tbl = Range("A2:N" & [A65000].End(xlUp).Row).Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Tbl = Feuil3.Range("A2:N" & [A65000].End(xlUp).Row).Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Feuil3
                Tbl = .Range("A2:N" & [A65000].End(xlUp).Row).Value

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Salut !

    Robert, pour ton néologisme !



    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

  6. #6
    Invité
    Invité(e)
    Par défaut
    salut Marc
    oui! si je note pas sa signification, je risque de ne plus me comprendre.

    Jean d'Ormesson est de mon avis la langue française est trop fade!

    De l'anglais astrobleme, mot inventé par Robert S. Dietz en 1963 composé de ἄστρον, ... L'astroblème caché sous la glace a été révélé indirectement par les ...
    mélange d'une faute de frappe en d'un correcteur d’orthographe!
    Dernière modification par Invité ; 11/02/2016 à 15h39.

  7. #7
    Membre averti
    Homme Profil pro
    CFA
    Inscrit en
    Février 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2016
    Messages : 16
    Par défaut
    Bon ok " 1 point " pour toi ..... ou moi, ça dépend comment on se place....

    Mais ca n'a résolu qu'une partie du problème, le Treeview se lance effectivement mais ne charge que le premier enfant...

    Merci d'avoir essayer, au plaisir

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 To 25
        père = Chr(65 + i)
        MonArbre.Nodes.Add Text:=père, Key:=père
        For i2 = 1 To 25
            FILS = Format(i2, "000")
            MonArbre.Nodes.Add père, 4, père & "_" & FILS, FILS
        Next
    Next

  9. #9
    Membre averti
    Homme Profil pro
    CFA
    Inscrit en
    Février 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2016
    Messages : 16
    Par défaut
    Ouh la c'est en dehors de mon petit champ de compétences

    En fait j'ai testé la fonction Ubound et c'est elle qui ne me renvoie pas le bon nombre de ligne. Elle me renvoie le nombre de ligne de l'onglet actif est non pas de la feuil3.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub UserForm_Initialize()
    'Renseigne le TreeView
            With Feuil3
                tbl = Feuil3.Range("A2:G" & [A65000].End(xlUp).Row).Value
                pere = "0"
                nomPere = Application.VLookup(pere, tbl, 2, False)
                Set tw = Me.MonArbre
                n = UBound(tbl)
                'n = Feuil3.Range("A65000").End(xlUp).Row
                tw.Nodes.Add(, , "NoeudMat" & pere, nomPere).Expanded = False ' Racine arbre
                Fils pere
            End With
     
    'Renseigne la Listbox "Catégorie"
            With Me.Catégorie
                Catégorie.AddItem "Matériaux"
                Catégorie.AddItem "Matériels"
                Catégorie.AddItem "Main d'Oeuvre"
            End With
     
     
    'Renseigne la Listbox "Unité"
            With Me.Unité
                t = Feuil3.Range("P2:P" & Range("P65536").End(xlUp).Row)
                Unité.List = t
            End With
    'Met le focus sur le Textbox
            With Code2
                .SetFocus
                .SelStart = 0
                .SelLength = Len(Code2.Text)
            End With
     
            Code2.AutoTab = True
     
     
    End Sub
     
     
    Sub Fils(parent)       ' procédure récursive
     
            With Feuil3
                For I = 2 To n
                cd = tbl(I, 1)
                niv = Len(cd) - Len(Replace(cd, ".", ""))
                    If niv = 0 Then temp = "0" Else temp = Left(cd, Len(cd) - 2)
                    If temp = parent Then
                        tw.Nodes.Add("NoeudMat" & parent, tvwChild, "NoeudMat" & _
                        tbl(I, 1), tbl(I, 1) & " :  " & tbl(I, 2) & "         " & tbl(I, 3)).Expanded = False
                        Fils tbl(I, 1)
                    End If
              Next I
            End With
    End Sub

    J'ai beaucoup de sous sous sous famille, j'ai plusieurs TW dans mon fichier qui sont déjà formaté et j'avais déjà bien avancé sur mon fichier...
    Je te remercie donc beaucoup pour ton code, je vais continuer à chercher...

    MERCI

    Entre parenthèses.. c'est très étrange quand même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub essai3()
    Dim tbl
     Tbl = Feuil3.Range("A2:G" & [A65000].End(xlUp).Row).Value
     MsgBox UBound(Tbl)
     End Sub
    La réponse est 7 le nombre de ligne présente sur feuil1
    !!!

    Voila,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            tbl = Feuil3.Range("A2:G" & Feuil3.Range("A" & Rows.Count).End(xlUp).Row).Value
                 pere = "0"
                 nomPere = Application.VLookup(pere, tbl, 2, False)
                 Set tw = Me.MonArbre
                 n = UBound(tbl)
                 tw.Nodes.Add(, , "NoeudMat" & pere, nomPere).Expanded = False ' Racine arbre
                 Fils pere
    Bonne soirée

  10. #10
    Invité
    Invité(e)
    Par défaut
    Comment pourrait elle te renvoyer le nombre de feuille!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                tbl = Feuil3.Range("A2:G" & [A65000].End(xlUp).Row).Value
    Accessoirement le nombre de colonnes.

  11. #11
    Membre averti
    Homme Profil pro
    CFA
    Inscrit en
    Février 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2016
    Messages : 16
    Par défaut
    C'est le nombre de ligne que je souhaitais pas de feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub essai3()
    tbl = Feuil3.Range("A2:G" & [A65000].End(xlUp).Row)
    MsgBox "il y'a " & UBound(tbl) & " lignes et " & UBound(tbl, 2) & " colonnes dans " & ActiveSheet.Name
    End Sub
    Pour le nombre de lignes c'est :

    est égal à
    pour colonnes c'est
    LE problème était dans la définition du tableau, la partie souligné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbl = Feuil3.Range("A2:G" & Feuil3.Range("A" & Rows.Count).End(xlUp).Row).Value
    Cordialement

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

Discussions similaires

  1. problème d'encodage avec la servlet sur Linux
    Par ja1985va dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 17/02/2011, 16h28
  2. Réponses: 7
    Dernier message: 11/05/2010, 11h17
  3. Probléme d'autenfication avec courier-imap sur 2008.1
    Par jean christophe dans le forum Administration système
    Réponses: 0
    Dernier message: 16/06/2009, 12h43
  4. Problème au lancement avec Vista
    Par directs dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2008, 13h21
  5. Réponses: 3
    Dernier message: 14/01/2007, 20h52

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