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 :

Modification ligne tableau structuré


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 176
    Par défaut Modification ligne tableau structuré
    Bonjour à tous,

    Je cherche, mais j'ai l'impression que c'est pas possible.

    Nom : 1.png
Affichages : 200
Taille : 39,9 Ko

    fichier: (clic droit dans le classeur, sélectionner un nom, cliquer sur modifier)
    forum.xlsm

    Merci pour votre aide
    Cdt

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, comme ceci:

    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
    Private Sub modifClt_click()
    'MODIFIER CLIENT
        Dim i As Long, plg As Range, ws1 As Worksheet, cell As Range
        Application.ScreenUpdating = False
        Set ws1 = Sheets("Clients")
        Dim codeClient As Variant
        Dim rechercheRange As Range
     
        codeClient = Me.codClt.Value
        Set rechercheRange = ws1.ListObjects("Clts").ListColumns("Code client").DataBodyRange
     
        For i = 1 To rechercheRange.Rows.Count
            If rechercheRange.Cells(i, 1).Value = codeClient Then
                ' Correspondance trouvée, i contient le numéro de ligne
                Exit For
            End If
        Next i
     
    MsgBox i
        With [Clts].ListObject
            .ListColumns("Nom").DataBodyRange(i) = Me.nomClt.Value
            .ListColumns("Adresse").DataBodyRange(i) = Me.adrClt.Value
            .ListColumns("Code postal").DataBodyRange(i) = Me.CPclt.Value
            .ListColumns("Ville").DataBodyRange(i) = Me.villClt.Value
            .ListColumns("Email").DataBodyRange(i) = Me.mailClt.Value
            .ListColumns("Tel").DataBodyRange(i) = Me.telClt.Value
        End With
            ws1.Activate
            Set plg = Range(Cells(i + 1, 1), Cells(i + 1, 7))
            If Not plg Is Nothing Then
                plg.Select
                ActiveWindow.ScrollRow = plg.Row
            End If
            'tri alphab plage sur le nom
                With Range("Clts").ListObject
                    .DataBodyRange.Sort Key1:=.ListColumns("Nom").DataBodyRange, Order1:=xlAscending, Header:=xlYes
                End With
            'annonce
                MsgBox "Modifications Enregistrées."
        Unload Me
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 176
    Par défaut
    Bonjour Franc,
    Merci pour ta réponse.
    ' Correspondance trouvée, i contient le numéro de ligne
    Mais çà marche pas. , le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim i As Long, plg As Range, ws1 As Worksheet, cell As Range
        Dim codeClient As Variant
        Dim rechercheRange As Range
        Application.ScreenUpdating = False
        Set ws1 = Sheets("Clients")
        codeClient = Me.codClt.Value
        Set rechercheRange = ws1.ListObjects("Clts").ListColumns("Code client").DataBodyRange
        For i = 1 To rechercheRange.Rows.Count
                If rechercheRange.Cells(i, 1).Value = codeClient Then
                MsgBox i
    me donne

    Nom : 2.png
Affichages : 117
Taille : 137,8 Ko
    Donc en ligne précédente.
    Et est-ce que c'est plus rapide que le code classique avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws1.Range("B" & i).Value=Me.nomClt.Value
    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour

    ce que tu récupères est l'index dans le databodyrange donc dans la plage de données. C'est donc bien la 74 ème ligne du tableau de données, qui n'est par la 74 ème ligne de la sheet compte tenu des entêtes (et potentiellement de la position du tableau).

    Pour être cohérent il faut rester dans la syntaxe des tableaux structurés et remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws1.Range("B" & i).Value=Me.nomClt.Value
    par exemple par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ws1.ListObjects("Clts").ListColumns("Code client").DataBodyRange.cells(i).value = Me.nomClt.Value

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Je n'ai rien à ajouter à l'explication de Tête de chat, maintenant si tu veux afficher la ligne correspondant à la ligne de la feuille, il te suffit d'ajouter le décalage entre le databodyrange et la feuille, dans le cas présent 1 et donc msgbox i+1.

  6. #6
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 176
    Par défaut
    Bonjour Tête de chat,
    Je comprends mieux maintenant, çà fonctionne.
    Et merci pour m'avoir donné le code dans la boucle, il est pas simple.
    Cdt

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

Discussions similaires

  1. Modification ligne tableau en rappelant le formulaire
    Par Freedavys18 dans le forum Excel
    Réponses: 2
    Dernier message: 19/02/2023, 22h06
  2. [XL-2013] Syntaxe plusieurs lignes tableau structuré
    Par Aymeline dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/01/2020, 12h02
  3. [XL-365] Boucle sur lignes tableau structuré
    Par LG-69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/12/2019, 14h36
  4. [XL-2016] problème ajout ligne sur tableau structuré
    Par anasecu dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/07/2019, 08h13
  5. [Toutes versions] ajout d'une ligne dans un tableau structuré dans un fichier fermé
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 02/07/2019, 10h06

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