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 de feuil1 vers feuil2 si valeur différente de 0 [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    informatique générale secteur commercial
    Inscrit en
    Décembre 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique générale secteur commercial
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 61
    Par défaut copier des lignes de feuil1 vers feuil2 si valeur différente de 0
    Bonjour, j'ai beau cherché sur le net , mais je suis perdue sachant que je suis débutante sur VBA

    Je m'explique j'ai 2 Feuilles

    Feuil1 : représente une base de donnée des produits que j'ai dans mon stocks
    (j'ai 8 colonnes "A,B,C,D,E,F,G,H) (7sont déja saisies et verrouillées, la 8em "H" est a saisir avec le temps)

    Feuil2: représente un "bon de commande" qui doit être remplie automatiquement:

    Un boutton qui reçoit une macro qui :

    une fois colonne H dans "feuil1" reçoit une valeur (c'est a dire elle est <> null , on recopie dans un tableau qui commence à partir de "D11", les lignes dont la colonne H <>0, sachant que je dois recopier que les colonnes (A,B,C,D,H)


    Si quelqu'un peut m'aider je lui serrais énormément reconnaissante , merci d'avance vous faites un super travaille

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,


    Une solution possible à adapter à vos feuilles :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Public ShArticles As Worksheet
    Public TitreArticles As Long
    Public DerniereLigneArticles As Long
    Public CelluleArticles As Range
    Public AireArticles As Range
     
    Public ShCommande As Worksheet
    Public TitreCommande As Long
    Public DerniereLigneCommande As Long
    Public LigneCommandeEnCours As Long
    Public ColonneDebutTableau As Long
     
    Sub CopierLesArticlesSelectionnesDansLaFeuilleCommande()
     
        Set ShArticles = Sheets("Articles")
        TitreArticles = 10
        DerniereLigneArticles = ShArticles.Cells(ShArticles.Rows.Count, 8).End(xlUp).Row
     
        Set ShCommande = Sheets("Commande")
        TitreCommande = 10
        DerniereLigneCommande = ShCommande.Cells(ShCommande.Rows.Count, 8).End(xlUp).Row
        LigneCommandeEnCours = TitreCommande + 1
        ColonneDebutTableau = 4
     
        If DerniereLigneCommande > TitreCommande Then
            Range(ShCommande.Cells(TitreCommande + 1, 4), ShCommande.Cells(DerniereLigneCommande, 8)).ClearContents
        End If
     
        Set AireArticles = Range(ShArticles.Cells(TitreArticles + 1, 8), ShArticles.Cells(DerniereLigneArticles, 8))
     
        If DerniereLigneArticles > TitreArticles Then
     
           For Each CelluleArticles In AireArticles
     
                If CelluleArticles <> "" Then
                    With ShCommande
                         .Cells(LigneCommandeEnCours, ColonneDebutTableau) = CelluleArticles.Offset(0, 1 - 8)
                         .Cells(LigneCommandeEnCours, ColonneDebutTableau + 1) = CelluleArticles.Offset(0, 2 - 8)
                         .Cells(LigneCommandeEnCours, ColonneDebutTableau + 2) = CelluleArticles.Offset(0, 3 - 8)
                         .Cells(LigneCommandeEnCours, ColonneDebutTableau + 3) = CelluleArticles.Offset(0, 4 - 8)
                         .Cells(LigneCommandeEnCours, ColonneDebutTableau + 4) = CelluleArticles
                         LigneCommandeEnCours = LigneCommandeEnCours + 1
                    End With
                End If
     
           Next CelluleArticles
     
           ShCommande.Activate
     
        Else
     
           MsgBox "Pas d'article sélectionné !", vbCritical, "Etablir une commande"
     
        End If
     
     
        Set AireArticles = Nothing
        Set ShCommande = Nothing
        Set ShArticles = Nothing
     
    End Sub

    Cordialement.

  3. #3
    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
    Bonjour,
    Juste un debut de solution en collant ce code dans le bouton qui active la macro


    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
    Private Sub CommandButton1_Click()
    Dim cell As Range
    'pour toute les cellules de la colonne H
    For Each cell In Worksheets("BDD").Range("h1:h" & Sheets("BDD").[h65000].End(xlUp).Row)
    'dont la valeur est differente de rien
        If cell.Value <> "" Then
            'recherche la derniere ligne vide sur Bon de commande
            r = Sheets("Bon de commande").Range("a65000").End(xlUp).Row + 1
            'pour les colonnes 1 à 4(a,b,c,d)
            For c = 1 To 4
            'coller la valeur de BDD sur bon de commande
            Sheets("bon de commande").Cells(r, c) = Sheets("BDD").Cells(cell.Row, c)
            Next c
            'pour la colonne 8(H)
            Sheets("bon de commande").Cells(r, 5) = Sheets("BDD").Cells(cell.Row, 5)
        End If
    Next cell
    End Sub

  4. #4
    Membre actif
    Femme Profil pro
    informatique générale secteur commercial
    Inscrit en
    Décembre 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique générale secteur commercial
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 61
    Par défaut
    Merci énormément Eric KERGRESSE et keygen08
    J'ai fais mes modifications sur le fichier de Eric KERGRESSE

    Mais svp je veux ajouter une condition sur BC (la colonne a remplier)
    Si (Contrôle>=0)alors msg d'erreur
    "quantité dépassé"
    Sachant que contrôle , c QT-BC
    c a dire (qt en stock-quantité qu on veut commander)

    Merci bcp , j'avais une grande pression
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je n'ai pas la possibilité de lire les fichiers compressés en .rar. Si votre fichier est en xlsm, faîtes en une copie en .xls en 1997-2003 et mettez le ligne.

    Cordialement.
    Dernière modification par AlainTech ; 21/12/2013 à 15h01. Motif: Suppression de la citation inutile

  6. #6
    Membre actif
    Femme Profil pro
    informatique générale secteur commercial
    Inscrit en
    Décembre 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique générale secteur commercial
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2013
    Messages : 61
    Par défaut
    Désolée le voila , et Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai ajouté une macro événementielle dans la feuille Articles, créé une zone nommée : ZoneBonDeCommande correspondant à la colonne sous le titre BC et une mise en forme conditionnelle sur la colonne Contrôle.


    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
     
    Private Sub Worksheet_Change(ByVal ZZ As Range)
     
       If ZZ.Count > 1 Then Exit Sub
     
       On Error Resume Next
       If Not Application.Intersect(ZZ, Range("ZoneBonDeCommande")) Is Nothing Then
     
            Select Case ZZ.Offset(0, -1)
            Case Is < 0
                MsgBox "Quantité disponible dépassée !" & Chr(10) & "Diminuez votre quantité !", vbCritical, "Contrôle du stock disponible"
                ZZ = ""
            Case 0
                MsgBox "Stock à 0 !" & Chr(10) & "Réapprovisionnez cet article !", vbCritical, "Contrôle du stock disponible"
            End Select
       End If
     
    End Sub
    Pour votre autre demande sur la feuille Commande, mettez en ligne un autre message car je n'aurai pas la possibilité de vous répondre.

    Bon courage.


    Cordialement.
    Dernière modification par AlainTech ; 21/12/2013 à 15h01. Motif: Suppression de la citation inutile

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

Discussions similaires

  1. [XL-2010] Copier Ligne Aléatoire Feuil1 vers Feuil2
    Par Galdwin94 dans le forum Excel
    Réponses: 1
    Dernier message: 26/04/2014, 00h52
  2. [XL-2007] Copier des lignes d'une plage vers un tableau
    Par Excel_man dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/03/2013, 04h40
  3. [XL-2003] Copier des lignes de couleur d'une feuille vers une autre
    Par grimgrim dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/02/2012, 10h45
  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, 13h46
  5. Copier des lignes d'une table
    Par thomas_strass dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 01/07/2005, 16h42

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