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 :

Copier des lignes dans un autre tableau .


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Bonjour ,

    j'aurrais besoin de votre aide , je doit transferrer des données d'un tableau dans un autre tableau présent dans un formulaire d'impressions :

    Ce tableau là :
    Nom : 663698592.png
Affichages : 676
Taille : 87,9 Ko

    Dans ce tableau là :

    Nom : 115770111.png
Affichages : 594
Taille : 108,9 Ko

    Sachant que je ne veut que copier Lot , quantité ,unité .
    Et que si une ligne est pleine , on me créer une ligne automatiquement sur le formulaire d'impression et on y copie la ligne et si une est vide on passe à la suivante sans créer la ligne .

    J'avais déjà créer un boue de code qui ne fonctionner pas du tout ( voir piece jointe ) , sa m'afficher bien la liste sauf quand une ligne était vide tout ce déforme .


    J'ai réfléchie et penser à une méthode avec un FOR allant de 2 à 12 et qui regarde si la ligne est pleine ou non .
    Mais je vous avoue que je suis un peut perdu actuellement je ne vois pas trop comment faire , quelqu'un pourrait m'aider ?

    Si quelqu'un peut m'aider je suis vraiment perdu , Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    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
    Option Explicit
    Option Base 1
     
    Sub Position()
     
        Dim xlsheet As Worksheet
        Dim xlsheet2 As Worksheet
        Dim AllRange As Range, MyRange As Range
        Dim Ligne(1, 3), i As Long
        Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
        Set xlsheet2 = ThisWorkbook.Worksheets("Feuil2")
        Set AllRange = xlsheet.Range("Product")
        i = 18
        For Each MyRange In AllRange
           If MyRange.Value <> "" Then
                'on rajoute une ligne
                i = i + 1
                xlsheet2.Rows(i).Insert shift:=xlDown
                Ligne(1, 1) = MyRange.Offset(, 2).Value 'lot
                Ligne(1, 2) = MyRange.Offset(, 3).Value 'qte
                Ligne(1, 3) = MyRange.Offset(, 4).Value 'ute
                xlsheet2.Range(Range("C" & i), Range("E" & i)).Value = Ligne
            End If
        Next MyRange
    End Sub
    tu nome ton range Product par exemple

    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
    Option Explicit
    Option Base 1
     
    Sub Position()
     
        Dim xlsheet As Worksheet
        Dim xlsheet2 As Worksheet
        Dim AllRange As Range, MyRange As Range
        Dim Ligne(1, 3), i As Long
        Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
        Set xlsheet2 = ThisWorkbook.Worksheets("Feuil2")
        Set AllRange = xlsheet.Range("Product")
        i = 18
        For Each MyRange In AllRange
           If MyRange.Value <> "" Then
                'on rajoute une ligne
                i = i + 1
                xlsheet2.Rows(i).Insert shift:=xlDown
                Ligne(1, 1) = MyRange.Offset(, 2).Value 'lot
                Ligne(1, 2) = MyRange.Offset(, 3).Value 'qte
                Ligne(1, 3) = MyRange.Offset(, 4).Value 'ute
                xlsheet2.Range(Range("C" & i), Range("E" & i)).Value = Ligne
            End If
        Next MyRange
    End Sub
    pour les mettres a la suite dehaut en bas c'est tetre mieux

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 110
    Points : 9 919
    Points
    9 919
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la demande est trop vague, et l'exemple trop trivial pour proposer quelque chose de réutilisable

    voici ce que j'ai fais, avec une seule formule excel :

    1) déjà, supprime la ligne vide dans ton tableau
    2) insère des lignes au dessus du tableau, pour le faire commencer à la ligne 18 qui contiendra tes titres
    3) dans ton bon de commande, écrit en C19 la formule suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Tableau1[[#Données];[Lot]]
    4) étire cette formule jusqu'en bas pour remplir tout tes lots
    5) étire ensuite cette formule sur les colonnes d'à côté, ça va automatiquement modifier les formules pour afficher Unité et Quantité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Tableau1[[#Données];[Unité]]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Tableau1[[#Données];[Quantité]]

    je te présente, les tableaux Excel !
    A user et abuser sans modération
    http://silkyroad.developpez.com/excel/tableau/

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    joe.levrai > Tout d'abord merci à toi , cela fonctionne bien mais je veut créer des ligne automatiquement si la ligne est complète et ne rien faire si elle est vide hors là si je comprend bien je doit avoir toute les lignes de mon tableau déjà présente dans le bon de commande et cela même si elle sont vide ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tamtam64 Voir le message
    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
    Option Explicit
    Option Base 1
     
    Sub Position()
     
        Dim xlsheet As Worksheet
        Dim xlsheet2 As Worksheet
        Dim AllRange As Range, MyRange As Range
        Dim Ligne(1, 3), i As Long
        Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
        Set xlsheet2 = ThisWorkbook.Worksheets("Feuil2")
        Set AllRange = xlsheet.Range("Product")
        i = 18
        For Each MyRange In AllRange
           If MyRange.Value <> "" Then
                'on rajoute une ligne
                i = i + 1
                xlsheet2.Rows(i).Insert shift:=xlDown
                Ligne(1, 1) = MyRange.Offset(, 2).Value 'lot
                Ligne(1, 2) = MyRange.Offset(, 3).Value 'qte
                Ligne(1, 3) = MyRange.Offset(, 4).Value 'ute
                xlsheet2.Range(Range("C" & i), Range("E" & i)).Value = Ligne
            End If
        Next MyRange
    End Sub
    pour les mettres a la suite dehaut en bas c'est tetre mieux
    Tout d'abord merci d'avoir pris le temp de m'aider mais j'ai un soucis ,

    Sa n'a pas l'air de fonctionner , j'ai mis le code dans le" Private Sub ButtonValider_Click()" pour qu'il s'execute une fois que l'on valide j'ai eu tort ? où ai je oublier de changer des valeur ? , sinon ça me donne l'erreur suivante et je clique sur ok sa me met "Option Explicit" en selectionner :

    Nom : 565095erreur.png
Affichages : 326
Taille : 32,3 Ko

  6. #6
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    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
    Option Explicit
    Option Base 1
     
    Sub Position()
     'definition des deux feuilles et range
        Dim xlsheet As Worksheet
        Dim xlsheet2 As Worksheet
        Dim AllRange As Range, MyRange As Range
         'ligne est un type tableau
        Dim Ligne(1, 3), i As Long
         ' on definit les deux feuilles , donc verifie que tes feuilles c'est bien Feuil2 et Feuil3
        Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
        Set xlsheet2 = ThisWorkbook.Worksheets("Feuil2")
        'il faut nommer ton range "Product" ( sans les guillemets)
         ' en fait tu vas nommer seullement la premiere colonne de ton range pas le range entier
        Set AllRange = xlsheet.Range("Product")
        i = 18
        For Each MyRange In AllRange
           If MyRange.Value <> "" Then
                'on rajoute une ligne
                i = i + 1
                xlsheet2.Rows(i).Insert shift:=xlDown
                Ligne(1, 1) = MyRange.Offset(, 2).Value 'lot
                Ligne(1, 2) = MyRange.Offset(, 3).Value 'qte
                Ligne(1, 3) = MyRange.Offset(, 4).Value 'ute
                xlsheet2.Range(Range("C" & i), Range("E" & i)).Value = Ligne
            End If
        Next MyRange
    End Sub
    voila pour moi tu as oublié de definir le range c'est a dire que tu selectionne la premiere colonne de la partie qui t'interesse et tu remplace la valeur en haut a gauche par Product

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2015
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Je vais te montrer des screen cela serra peut être plus simple pour que tu m'explique :

    Voilà la tableau de données :
    Nom : 307634Capture.png
Affichages : 279
Taille : 10,8 Ko

    Et voici le formulaire qui doit être remplis :

    Nom : 234226Capture2.png
Affichages : 428
Taille : 31,3 Ko


    Donc j'ai essayer de faire ce que tu m'a dit même si sa reste floue , j'ai donc sélectionner la plage de cellule qui m’intéresser soit les 3 colonnes Lot , Unité et quantité avec toute les lignes du dessous comme ceci :

    Nom : 496349Sanstitre.png
Affichages : 389
Taille : 72,7 Ko

    Puis ensuite dans Formule j'ai cliquer sur Ajouter un nom et je l'ai appeler Product ( sans les guillemets) .

    Est ce que j'ai bon à partir de là ?

    J'ai executer le programme mais visiblement sa ne fonctionne pas j'ai toujours la même erreur .

    Je te met mon fichier en pièce jointe pour que tu regarde
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Copier des lignes dans une autre feuille sous condition
    Par Maya06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2014, 20h57
  2. [XL-2003] Copier des lignes dans une autre feuille à la première ligne vide
    Par PasDan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2010, 13h34
  3. Excel-copier des lignes sur une autre feuille
    Par petecul dans le forum Excel
    Réponses: 7
    Dernier message: 13/09/2007, 02h56
  4. VBA EXCEL - Copier des ligne vers un autre calseur.
    Par patine31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2007, 12h46
  5. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

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