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 :

Suppression ligne de listbox


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Nagel Tha Voir le message
    Juste une question en revoyant ton post 11, tu définis deux variables en ajoutant l'esperluette (&) à la fin, c'est sûrement une question idiote mais que signifient-ils ? (ex : Dim a&)
    re

    decaration abrégées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim toto&,titi%,fifi$,riri#
    est l'equivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim toto as long,titi as integer,fifi as string,riri as double
    c'est des declarations a la ri(fifi..eu...kiki) de toto
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #22
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    pour faire simple je réhitere mon invitation a relire le post#11

    Citation Envoyé par PassePartout007
    cependant il me renvoi l'erreur :
    Erreur d'exécution'-2147467259(80004005)'
    Erreur non répertoriée


    à la ligne :
    ModifList.ListBoxList.RemoveItem (i)
    Cette erreur est à mon avis lié au fait que la liste du ListBox est renseigné grâce à RowSource, donc peu importe la méthode utilisée pour modifier directement le contenu du ListBox, ça ne fonctionnera pas

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #23
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour qwazerty
    sans doute a verifier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #24
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut Re
    Merci pour tout vos code il sont tous très bien,
    Je reviens vers Qwazerty pour m'assurer d'avoir bien compris son code.


    Dans ton code le StrItemSelected prend l'ensemble des indices de la listbox en mémoire et transpose tout ses indice à Idel qui à travers la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(Feuille).ListObjects("List_" & Nom & Genre).ListRows(CLng(TabDel(iDel)) + 1).Delete
    supprime dans le tableau l'indice +1 associer ?
    Est t'il possible que malgré la Rowsource qu'il y est un décalage d'indice et donc qu'il supprime la mauvaise ligne?
    Ne serais t'il pas judicieux de faire une vérification sur le contenu avant de supprimé ? (Je me demande juste au cas ou je sais que tu gères bien ce genre de chose.)

    Actuellement voici mon code pour ajouter et supprimer des lignes de ma listbox :

    Pour ajouter :
    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
    Private Sub CommandButtonajoulist_Click()
    Dim LList As Object
     
    Set LList = CreateObject("Scripting.Dictionary")
    If Me.ListBoxList.ListCount <> 0 Then
     
        For Each Item In ListBoxList.list
        If Not LList.Exists(TextBoxAjouliste.Value) Then
            If Item <> "" Then
                LList.Add Item, Item
            End If
        End If
        Next Item
     
        If LList.Exists(TextBoxAjouliste.Value) Then
            MsgBox "Item déja présent dans la liste"
        Else
            LList.Add TextBoxAjouliste.Value, TextBoxAjouliste.Value
            Me.ListBoxList.RowSource = ""
            For Each Item In LList
                Me.ListBoxList.AddItem Item
            Next Item
            TextBoxAjouliste.Value = ""
        End If
    End If
    LList.RemoveAll
     
    End Sub
    Pour supprimer
    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
    Private Sub CommandButtonSpprimer_Click()
     
    Dim iVal As Integer
    Dim iDel As Variant, TabDel As Variant
    Dim strItemSelected As String
    Dim Nom As String
    Dim LList As Object
    Dim Genre As String
     
    Feuille = ComboBoxTypeListes.Value
    Nom = ComboBoxNom.Value
     
    If ComboBoxNom.Value <> "" And ComboBoxTypeListes.Value <> "" Then
     
        If InStr(1, Feuille, "FT") <> 0 Then
            Genre = "FTS"
        ElseIf InStr(1, Feuille, "IT") <> 0 Then
            Genre = "IT"
        ElseIf InStr(1, Feuille, "DOS") <> 0 Then
            Genre = "DOS"
        Else
            Genre = ""
        End If
    End If
     
     
        'Lorsqu'une ligne du tableau excel est supprimée, la listbox est immédiatement rafraichi et la sélection est perdue
        'On fait donc une image à l'instant t des item à supprimer
        For iVal = 0 To ListBoxList.ListCount - 1
            If ListBoxList.Selected(iVal) Then
                If strItemSelected <> "" Then strItemSelected = strItemSelected & ","
                strItemSelected = strItemSelected & CStr(iVal)
            End If
        Next
     
        If strItemSelected <> "" Then
     
            Application.ScreenUpdating = False
     
            'On boucle sur les item à supprimer (toujours en sens inverse)
            TabDel = Split(strItemSelected, ",")
            For iDel = UBound(TabDel) To 0 Step -1
                ThisWorkbook.Worksheets(Feuille).ListObjects("List_" & Nom & Genre).ListRows(CLng(TabDel(iDel)) + 1).Delete
            Next
     
            Application.ScreenUpdating = True
        End If
    End Sub
    La ligne sert bien a figer l'actualisation de la listbox afin qu'aucun indice ne change ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = xxx
    Cordialement,
    Passepartout007

  5. #25
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Citation Envoyé par Passepartout007 Voir le message
    Dans ton code le StrItemSelected prend l'ensemble des indices de la listbox en mémoire et transpose tout ses indice à Idel qui à travers la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(Feuille).ListObjects("List_" & Nom & Genre).ListRows(CLng(TabDel(iDel)) + 1).Delete
    supprime dans le tableau l'indice +1 associer ?

    Est t'il possible que malgré la Rowsource qu'il y est un décalage d'indice et donc qu'il supprime la mauvaise ligne?
    Ne serais t'il pas judicieux de faire une vérification sur le contenu avant de supprimé ? (Je me demande juste au cas ou je sais que tu gères bien ce genre de chose.)
    A ma connaissance non, le contenu du ListBox est à l'image exact du champs qui lui est lié. Pour s'en convaincre, il suffit de tester. Ajoutes un bouton CmdTri avec le code suivnat dans le fihcier transmis au dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub CmdTrier_Click()
        With Feuil1.ListObjects("Tab_Valeurs")
            'On trie la colonne par orde alpha inverse
            .Sort.SortFields.Clear
            .Sort.SortFields.Add .ListColumns("Valeurs").DataBodyRange, xlSortOnValues, xlDescending
            .Sort.Apply
        End With
    End Sub
    Il change l'ordre de tri et la listbox est mise à jour immédiatement.

    Pour le décalage de +1, c'est dû au fait que le ListBox travaille en Base 0 (sont 1er index est 0) alors que les tableau structuré travaille en base 1.



    Actuellement voici mon code pour ajouter et supprimer des lignes de ma listbox :

    Pour ajouter :
    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
    Private Sub CommandButtonajoulist_Click()
    Dim LList As Object
     
    Set LList = CreateObject("Scripting.Dictionary")
    If Me.ListBoxList.ListCount <> 0 Then
     
        For Each Item In ListBoxList.list
        If Not LList.Exists(TextBoxAjouliste.Value) Then
            If Item <> "" Then
                LList.Add Item, Item
            End If
        End If
        Next Item
     
        If LList.Exists(TextBoxAjouliste.Value) Then
            MsgBox "Item déja présent dans la liste"
        Else
            LList.Add TextBoxAjouliste.Value, TextBoxAjouliste.Value
            Me.ListBoxList.RowSource = ""
            For Each Item In LList
                Me.ListBoxList.AddItem Item
            Next Item
            TextBoxAjouliste.Value = ""
        End If
    End If
    LList.RemoveAll
     
    End Sub
    Utiliser un Dictionary pour tester si une valeur existe... c'est un peu comme utiliser un sabrelaser pour découper ses carrotes pour la soupe... ça fait riche
    Il existe moulte petits code sur le net pour rechercher une valeur dans une liste, ça sera tout aussi rapide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Me.ListBoxList.RowSource = "" 
            For Each Item In LList
                Me.ListBoxList.AddItem Item
            Next Item
    Par contre ici ça n'est pas bon, tu dois garder le RowSource tel qu'il est, il suffit que tu mettes à jour le contenu de ton tableau sur ta feuille eXcel, le contenu du ListBox sera mis à jour tout seul par Excel.
    Regarde dans le fichier au dessus le code du bouton Ajouter


    Pour supprimer
    Le code me semble OK

    La ligne sert bien a figer l'actualisation de la listbox afin qu'aucun indice ne change ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = xxx
    Si tu regardes dans l'aide Excel tu auras plus d'information sur l'utilisation de ScreenUpdating. On l'utilise pour figer le rafraichissement de la feuille Excel, pour que l'utilisateur ne voit pas les cellule changer de contenu les une après les autres, comme ça une fois mis à False, l'écran est rafraichi et toutes les modification s apparaissent d'un coup. C'est plus propre et beaucoup plus rapide lors de boucle importante car la rafraichissement prends beaucoup de temps.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #26
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Si tu avais mis un fichier, le pb serait déjà résolu.
    Un exemple simple en PJ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub B_enlève_Click()
      If Me.Dest.ListCount > 0 And Me.Dest.ListIndex <> -1 Then Me.Dest.RemoveItem Me.Dest.ListIndex
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  7. #27
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut Re
    Bonjour,
    J'ai pris en compte de tes conseil et j'ai donc retravailler sur le code et celui-ci semble fonctionner correctement.

    L'ajout a la listbox :
    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
    Private Sub CommandButtonajoulist_Click()
     
    Dim Nom As String
    Dim feuilles As String
    Dim Genre As String
     
     
     
    feuilles = ComboBoxTypeListes.Value
    Nom = ComboBoxNom.Value
     
    If ComboBoxNom.Value <> "" And ComboBoxTypeListes.Value <> "" Then
     
    If InStr(1, feuilles, "FT") <> 0 Then
    Genre = "FTS"
    ElseIf InStr(1, feuilles, "IT") <> 0 Then
    Genre = "IT"
    ElseIf InStr(1, feuilles, "DOS") <> 0 Then
    Genre = "DOS"
    Else
    Genre = ""
    End If
    End If
     
    Set Montablo = ThisWorkbook.Worksheets(feuilles).ListObjects("List_" & Nom & Genre)
     
    Dim LList As Object
     
    Set LList = CreateObject("Scripting.Dictionary")
    If Me.ListBoxList.ListCount <> 0 Then
     
        For Each Item In ListBoxList.list
        If Not LList.Exists(Item) Then
            If Item <> "" Then
                LList.Add Item, Item
            End If
        End If
        Next Item
     
        If LList.Exists(TextBoxAjouliste.Value) Then
            MsgBox "Item déja présent dans la liste"
        Else
            LList.Add TextBoxAjouliste.Value, TextBoxAjouliste.Value
            Range(Montablo).Columns(1).Resize(LList.Count) = Application.Transpose(LList.keys)
     
     
        End If
    End If
    LList.RemoveAll
     
    End Sub
    La suppression de la listbox :

    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
    Private Sub CommandButtonSpprimer_Click()
     
    Dim iVal As Integer
    Dim iDel As Variant, TabDel As Variant
    Dim strItemSelected As String
    Dim Nom As String
    Dim LList As Object
    Dim Genre As String
     
    Feuille = ComboBoxTypeListes.Value
    Nom = ComboBoxNom.Value
     
    If ComboBoxNom.Value <> "" And ComboBoxTypeListes.Value <> "" Then
     
        If InStr(1, Feuille, "FT") <> 0 Then
            Genre = "FTS"
        ElseIf InStr(1, Feuille, "IT") <> 0 Then
            Genre = "IT"
        ElseIf InStr(1, Feuille, "DOS") <> 0 Then
            Genre = "DOS"
        Else
            Genre = ""
        End If
    End If
     
     
        'Lorsqu'une ligne du tableau excel est supprimée, la listbox est immédiatement rafraichi et la sélection est perdue
        'On fait donc une image à l'instant t des item à supprimer
        For iVal = 0 To ListBoxList.ListCount - 1
            If ListBoxList.Selected(iVal) Then
                If strItemSelected <> "" Then strItemSelected = strItemSelected & ","
                strItemSelected = strItemSelected & CStr(iVal)
            End If
        Next
     
        If strItemSelected <> "" Then
     
            Application.ScreenUpdating = False
     
            'On boucle sur les item à supprimer (toujours en sens inverse)
            TabDel = Split(strItemSelected, ",")
            For iDel = UBound(TabDel) To 0 Step -1
                ThisWorkbook.Worksheets(Feuille).ListObjects("List_" & Nom & Genre).ListRows(CLng(TabDel(iDel)) + 1).Delete
            Next
     
        End If
    Application.ScreenUpdating = True
    End Sub
    Cela se passe merveilleusement bien, pendant la modification j'ai eu un cas ou je faisais apparaitre dans la liste deux fois FTS je n'ai pas compris pourquoi mais cela semble ne pas se répéter.
    Cordialement,
    Passepartout007

  8. #28
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonjour,

    Si tu avais mis un fichier, le pb serait déjà résolu.
    Un exemple simple en PJ.

    Boisgontier
    Mon problème est résolut Grace a Qwazerty, je te remercie pour ta participation.
    Il est demander dans l'édition du premier poste d'éviter d'introduire un fichier et d'expliquer clairement sont problèmes. C'est pour cela que je n'ais pas joint de fichier.
    Cordialement,
    Passepartout007

  9. #29
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Penses à déclarer toutes tes variables (MonTablo ne l'est pas entre autre). Pour t'y obliger, place
    Tout en haut de tes modules

    [QUOTE=Passepartout007;10390332]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            LList.Add TextBoxAjouliste.Value, TextBoxAjouliste.Value
            Range(Montablo).Columns(1).Resize(LList.Count) = Application.Transpose(LList.keys)
    Attention ici tu ne précises pas la feuille dans laquelle tu places tes données.
    est compris par excel comme étant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Montablo.DataBodyRange.address)
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A2:A11")
    Préfères plutot une écriture du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montablo.ListColumns(1).resize(LList.count) = ...
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #30
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut Re
    Re Qwaz,

    alors la variable Montablo est bien déclarée j'ai oublié effectivement de le préciser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Montablo As ListObject
    Concernant la feuille je précise bien dans la déclaration de mon tableau la feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Montablo = ThisWorkbook.Worksheets(feuilles).ListObjects("List_" & Nom & Genre)
    Cela correspond bien au bon tableau de la bonne feuille non ? Sauf si je doit encore le déclarer pour le Range.
    Cordialement,
    Passepartout007

  11. #31
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut
    Re Qwaz
    Citation Envoyé par Qwazerty Voir le message
    Préfères plutot une écriture du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montablo.ListColumns(1).resize(LList.count) = ...
    ++
    Qwaz
    Ta ligne de code me renvoi un erreur de type méthode non gérée par l'Object.

    Re-EDIT
    Je viens de tester et mon code fonctionne correctement, il y a juste un problème d'actualisation de la Listbox quand je ne travail pas sur la page active effectivement je vais rechercher le problème tu a mis le doigt sur une erreur.
    Je fais un retour des que j'ai trouver
    Apres quelque teste cela fonctionne correctement. Si tu pense qu'il y à vraiment un erreur avec Montablo je suis disposer à faire des testes supplémentaires.
    Cordialement,
    Passepartout007

  12. #32
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Le soucis est lien à l'écriture Range(MonTablo) comme écrit au dessus, si la feuille active change, le code inscrira sur la nouvelle feuille active

    essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montablo.ListColumns(1).Databodyrange.resize(LList.count) = ...
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #33
    Membre confirmé
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Le soucis est lien à l'écriture Range(MonTablo) comme écrit au dessus, si la feuille active change, le code inscrira sur la nouvelle feuille active

    essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Montablo.ListColumns(1).Databodyrange.resize(LList.count) = ...
    ++
    Qwaz
    Je comprend bien ton explication mais à l'application quand j'ai une page active différente de celle ou je travail il copie les informations sur la bonne feuille et non sur la page active. Je ne l'explique pas mais cela a l'aire de fonctionner.

    Cependant, ta ligne de code fonctionne aussi parfaitement, je vais donc l'utiliser pour éviter les erreurs futur.
    Je marque le sujet comme résolu n'hésite pas si tu as d'autre points à aborder.
    Cordialement,
    Passepartout007

  14. #34
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Autant pour moi, je viens de tester, mettre Range(Feuil1.range(...)) ne modifie pas le classeur/feuille parent tu as raison.
    Ça fonctionne donc mais ça reste inutile C'est comme si tu faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(ThisWorkbook.Sheets(...).Range("A1")).value
    Pour tester
    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
    Sub test()
    Dim a As ListObject
    Dim b As Range
    Dim ws As Worksheet
    Dim wb As Workbook
     
    'On pointe le tableau
    Set a = Feuil1.ListObjects("Tab_Valeurs")
     
    'On pointe les données qu'il contient avec Range()
    Set b = Range(a)
     
    'On regarde sur quelle feuille b pointe
    Set ws = b.Worksheet
     
    If ws Is Nothing Then
        MsgBox "Il n'existe pas de feuille précisée, le code utilisera donc la feuille active"
    Else
        MsgBox "On travaille sur la feuille " & ws.Name
    End If
     
    'On regarde sur quel classeur
    Set wb = b.Worksheet.Parent
     
    If wb Is Nothing Then
        MsgBox "Il n'existe pas de classeur précisé, le code utilisera donc le classeur actif"
    Else
        MsgBox "On travaille sur le classeur " & wb.Name
    End If
     
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] suppression ligne feuille avec listbox
    Par tiesto08 dans le forum Excel
    Réponses: 6
    Dernier message: 07/03/2017, 18h16
  2. Problème erreur 424 suppression d'une ligne via listbox
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2013, 17h04
  3. [XL-2003] pb suppression lignes listbox
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2010, 17h49
  4. [JTable] probleme suppression ligne
    Par lilou77 dans le forum Composants
    Réponses: 1
    Dernier message: 01/11/2005, 10h34

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