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 :

insertion de valeur dans cellules dans un tableau d'un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Juin 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 15
    Par défaut insertion de valeur dans cellules dans un tableau d'un classeur
    Bonjour,
    J'ai un soucis sur un fichier. J'ai un fichier où je lui demande de copier des valeurs dans des cellules.
    Lorsque les cellules du fichier sont dans un classeur, il n'y a pas de soucis.
    Par contre quand je selectionne une plage de cellules pleine et vide et que je les transforme en tableau, les prochaines cellules qui seront remplies seront dans la feuille et pas dans le tableau.
    là je sèche. Je pense que le tableau est un objet, mais je ne sais pas comment faire.
    Ci dessous le gros du 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub CMDBVALIDER_Click()
    Application.DisplayAlerts = False
    Dim Y, X As Integer
     Dim lastRow As Integer, annee As String
    Workbooks.Open Filename:="C:\Users\julien\Desktop\classeur1.xlsm"
        newRow = Sheets(annee).Cells(Columns.Count, 2).End(xlUp).Row + 1
        With Sheets(annee)
    Y = Sheets(annee).Range("A" & Rows.Count).End(xlUp).Row
    X = Sheets(annee).Cells(Y, "A").Value + 1
    .Cells(newRow, 1).Value = X
    .Cells(newRow, 2).Value = CDate(Me.TB1.Value)
    .Cells(newRow, 3).Value = Me.TB2.Value
    .Cells(newRow, 4).Value = Me.TB3.Value
    .Cells(newRow, 5).Value = Me.TB4.Object
    .Cells(newRow, 6).Value = Me.TB5.Value
    .Cells(newRow, 8).Value = Me.TB6.Value
    Chemin = "C:\Users\julien\Desktop\
        Texte = "classeur 1" & " " & annee
     
        Workbooks("classeur1.xlsm").Sheets(annee).ExportAsFixedFormat Type:=x1TypePDF, _
        Filename:=Chemin & Texte, _
        Quality:=x1QualityMinimum, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        PaperSize = xlPaperA3
        FirstPageNumber = xlAutomatic
        Order = xlDownThenOver
     
     
    End Sub

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 975
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pour insérer des données dans un objet Tableau (ListObject) à la fin tu peux essayer un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Dim LO As ListObject, LR As ListRow
        Set LO = ActiveSheet.ListObjects("Tableau1")
        Set LR = LO.ListRows.Add
        LR.Range.Cells(1, 1).Value = "TestCol1"
        LR.Range.Cells(1, 2).Value = "Col2"
        LR.Range.Cells(1, 3).Value = 25
        Set LR = Nothing
        Set LO = Nothing
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Juin 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 15
    Par défaut
    Bonjour tototiti2008,
    Merci pour ton retour.
    J'ai essayé plusieurs chose mais ça ne fonctionne pas
    Le code ci-dessous permet d'ajouter une ligne au tableau, mais mois je veux écrire à la prochaine ligne vide du tableau et mettre à la première cellule le numéro de dessus +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Set LR = LO.ListRows.Add

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut
    quand tu veut agrandir un tableau structuré il faut ajouter une ligne... Bref c'est bien comme ca qu'il faut faire, quand a l'incrémentation de valeur il te suffit de récupérer la derniere avant d'ajouter ta ligne, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim LO As ListObject, LR As ListRow
    Dim MyValue as double
        Set LO = ActiveSheet.ListObjects("Tableau1")
    myvalue =LO.ListColumns(LO.ListRows.Count).Range (1)
        Set LR = LO.ListRows.Add
        LR.Range(1)= MyValue+1
        LR.Range(2) = "Col2"
        LR.Range(3) = 25
        Set LR = Nothing
        Set LO = Nothing
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Juin 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 15
    Par défaut
    Oui, ca pourrait fonctionner, mais j'ai des formules dans certaine colonne qui se réfèrent à des cellules de lignes.
    J'ai donc créé des lignes vides dans le tableau.
    exemple:
    création d'un tableau avec les colonnes de A à K et est composé de 400 lignes vides
    les colonne de A à G sont vides (à remplir par mes valeurs de textbox), et de H à K des formules correspondant à chaque ligne que j'ai déjà incrémentées (type: "=SI(E93="";0;MOIS(E93))") .
    Si j'insert une ligne, les cellules des colonne H;I;J;K seront vides.
    c'est pour cela que je veux lui dire de mettre dans le tableau les valeurs après la dernière ligne remplie.
    j'espère avoir été plus clair dans mon problème

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 975
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Si j'insert une ligne, les cellules des colonne H;I;J;K seront vides.
    Non
    La propriété d'un tableau (ListObject) est que l'ajout de ligne crée une nouvelle ligne avec les mêmes formules qu'avant
    c'est même un des principaux avantages de tableaux

  7. #7
    Membre averti
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Juin 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 15
    Par défaut
    Effectivement ça fonctionne, mais ça ne m'a copier qu'une seule formule sur les 3 cellules.
    Au sujet de l'incrémentation le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyValue = LO.ListColumns(LO.ListRows.Count).Range(1)
    ne fonctionne pas.
    pour info, ayant le tableau identique dans plusieurs feuille (année) j'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LO = ActiveSheet.ListObjects("Tableau1")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LO = ActiveSheet.ListObjects(1)
    A voir si ça fonctionne
    c'est cool tu commences à me débloquer !

  8. #8
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 975
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Nous sommes deux à t'avoir proposé des choses
    Pour savoir où ça bloque, il faudrait déjà que nous sachions :
    Quel code as tu retenu, comment l'as tu adapté
    Si on ne sais pas ce que tu fais, ni vraiment ce qui te bloque, je ne vois pas ce qu'on pourrait ajouter de pertinent

  9. #9
    Membre averti
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Juin 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 15
    Par défaut
    je m'excuse, je n'avais pas vu que vous étiez 2.
    en fait vous m'avais bien aidé tout les 2.
    tototiti2008 sur l'ensemble du code et ChristianBosch sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myvalue =LO.ListColumns(LO.ListRows.Count).Range (1)
    ce bout de code je l'ai remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyValue = LO.ListRows(LO.ListRows.Count).Range(1)
    ça fonctionne trés bien.
    le code que je n'avais pas testé lorsque l'on change de feuille, fonctionne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LO = ActiveSheet.ListObjects(1)
    Quand aux formules qui ne fonctionnais pas, cela vennait de ma mise en forme de tableau.
    Un grand merci à vous 2, je ne connaissais pas du tout le "ListObjects"

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

Discussions similaires

  1. [XL-MAC 2011] Trouver une valeur dans un tableau et afficher une cellule correspondante.
    Par mikelemerle dans le forum Excel
    Réponses: 4
    Dernier message: 11/02/2016, 21h21
  2. Rechercher une Valeur dans un tableau et garder le N° de la cellule en mémoire
    Par matteo.martelli dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/10/2012, 08h28
  3. insertion de valeur dans dans une cellule d'un JTable
    Par demso dans le forum Composants
    Réponses: 1
    Dernier message: 12/03/2012, 17h20
  4. Réponses: 3
    Dernier message: 13/04/2010, 13h39
  5. [find] Trouver des valeurs dans un tableau de cellules
    Par Pierre845 dans le forum MATLAB
    Réponses: 5
    Dernier message: 22/01/2009, 11h52

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