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 :

VBA Copie ligne précédente tableau avec combobox date [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonjour
    J'ai créé, avec de l'aide, une macro qui copie la dernière ligne d'un tableau.
    Je souhaiterai pouvoir changer la date de la 1er feuille à partir d'une date saisie dans une textbox.
    Dans le meilleur des cas, il me rajoute bien le copie de la ligne précédente, mais bloque à la modification de date dans le tableau.
    Ci-joint fichier exemple.
    Merci de votre aide
    Joël
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ajoutavecdate()
     
    Dim a, i As Byte
    Dim Dt As Date
    Dt = InputBox("Entrer une date")
    a = Split("Données;Données2", ";")
    For i = 0 To UBound(a)
      With Sheets(a(i)).ListObjects(1).Range
        .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
        .Cells(.Rows.Count + 1, 1) = Dt
      End With
    Next i
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bonsoir
    Merci de l'aide
    Ça réponds quasiment à mon objectif. Juste que je souhaite pour une question d'organisation et de fiabilité sur mon fichier initial (qui contient 5 feuilles) que la date fasse référence à celles de la première feuille au lieu d'être copiée à partir de la message box.

    J'ai tenté à partir du code d'un userform, mais je bloque.
    Joël
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour :

    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
    Sub ajoutavecdate()
     
    Dim a, i As Byte
    Dim Dt As Date
     
    'Modification :
    Dt = Worksheets("MaFeuille").Range("A1").value
     
    a = Split("Données;Données2", ";")
    For i = 0 To UBound(a)
      With Sheets(a(i)).ListObjects(1).Range
        .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
        .Cells(.Rows.Count + 1, 1) = Dt
      End With
    Next i
     
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Profession indépendande
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Profession indépendande
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Par défaut
    Bpjour Nico chg
    Merci de l'aide

    Je ne parviens pas à la faire fonctionner
    Sans messagebox ou userform/textbox,je ne peux pas saisir de date.
    Si je mets la messagebox en début, il me copie bien la ligne mais sans date.

    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
     
    Sub ajoutavecdate()
     
    Dim a, i As Byte
    Dim Dt As Date
     Dt = InputBox("Entrer une date")
    'Modification :
    Dt = Worksheets("Feuil1").Range("A1").Value
     
    a = Split("Données;Données2", ";")
    For i = 0 To UBound(a)
      With Sheets(a(i)).ListObjects(1).Range
        .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
        .Cells(.Rows.Count + 1, 1) = Dt
      End With
    Next i
     
    End Sub
    Si je la mets en dessous de Dt=Wokrsheets....
    Il me copie bien les lignes en bas de chaque tableau mais supprme la formule en première colone de la page Données2.

    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
     
    Sub ajoutavecdate()
     
    Dim a, i As Byte
    Dim Dt As Date
     
    'Modification :
    Dt = Worksheets("Feuil1").Range("A1").Value
    Dt = InputBox("Entrer une date")
    a = Split("Données;Données2", ";")
    For i = 0 To UBound(a)
      With Sheets(a(i)).ListObjects(1).Range
        .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
        .Cells(.Rows.Count + 1, 1) = Dt
      End With
    Next i
     
    End Sub
    Peut être me suis-je mal exprimé en parlant de macro, ce que j'ai besoin et qui sera réutilisable pour un autre formulaire que je souhaite développer après, c'est le fonctionnement du Userform appelé par le bouton 3 du fichier joint.
    Il faudrait que, le code recopie la dernière ligne de chaque tableau (il y en en pour l'instant 5 dans mon classeur de travail), ce qui fonctionne avec la macro que j'ai mis en exemple (1er bouton) et qu'ensuite il transfère la date de la textbox" txtDate en 1ere colonne de la première feuille (données dans l'exemple) sans modifier les 1ere colonnes des feuilles suivante.


    Code du userform qui ne fonctionne pas, erreur variable non définie

    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
     
    Option Explicit
    Dim a, i As Byte
     
     
     
    Private Sub CmdOk_Click()
     
    a = Array("Données", "Données2")
    For i = 0 To UBound(a)
     With Sheets(a(i)).ListObjects(1).Range
         .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
      End With
     
     
      With Sheets("Données").ListObjects("Tab_Données")
     
        If .ListRows.Count = 1 And .ListRows(1).Range.Cells(1, 1) = "" Then
            Set LignTablo = Sheets("Données").ListObjects("Tab_Données").ListRows(1)
        Else
            Set LignTablo = Range("Tab_Données").ListObject.ListRows.Add(AlwaysInsert:=True)
        End If
    End With
     
     
     
     
      With LignTablo.Range
        .Cells(1, 1) = CDate(TxtDate)
     
    End With
    Next
    Me.Hide
    End Sub
    Joël
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Citation Envoyé par joel50 Voir le message
    Peut être me suis-je mal exprimé en parlant de macro, ce que j'ai besoin et qui sera réutilisable pour un autre formulaire que je souhaite développer après, c'est le fonctionnement du Userform appelé par le bouton 3 du fichier joint.
    Il faudrait que, le code recopie la dernière ligne de chaque tableau (il y en en pour l'instant 5 dans mon classeur de travail), ce qui fonctionne avec la macro que j'ai mis en exemple (1er bouton) et qu'ensuite il transfère la date de la textbox" txtDate en 1ere colonne de la première feuille (données dans l'exemple) sans modifier les 1ere colonnes des feuilles suivante.
    Je n'ouvre pas les Pièces jointes, donc je n'ai pas toutes les pièces pour comprendre ta problématique !

    Mais je dois t'avouer que j'ai lu tout en diagonal, j'ai très mal saisi ta problématique, Mea Culpa! Je te propose donc de recommencer, et d'oublier le code que j'ai proposer, qui n'avance à rien.

    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
    Sub ajoutavecdate()
     
    Dim a, i As Byte
    Dim Dt As Date
     
    'Modification :
    Dt = InputBox("Entrer une date", , Worksheets("MaFeuille").Range("A1").value)
     
    a = Split("Données;Données2", ";")
    For i = 0 To UBound(a)
      With Sheets(a(i)).ListObjects(1).Range
        .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1)
        .Cells(.Rows.Count + 1, 1) = Dt
      End With
    Next i
     
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Cacher ligne de tableau avec 2 cellules
    Par swissmade dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/07/2008, 14h46
  2. Ajouter 1 ligne à un tableau avec rowspan & colspan
    Par softflower dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/11/2006, 22h35
  3. [VBA-E]Envoyer un "tableau" avec Lotus
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/05/2006, 14h56
  4. [VBA-E]variable en tableau - controle combobox
    Par gojaru dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2006, 17h07
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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