Sélection automatique dune ligne lorsqu'un nombre est ajouter

Résolu
danpoo Messages postés 39 Statut Membre -  
danpoo Messages postés 39 Statut Membre -
Voila j'ai une liste comme suit et pour les besoins de la cause j'ai réduit le nombres de cellule car j'ai plus de cellules prix que ceux indiqué mais bon..
je voudrait faire en sorte que quand une quantité (QTY) est inséré, que la ligne ou les cellules préalablement choisi soit copié dans une autre feuilles de façon a n'avoir que les lignes qui ont un ajout de quantité pour pouvoir facturer ce qui a été utilisé.

IDR (détail) IDR (détail) QTY
MODEL # PIECE DIMENSION PRIX/CHQ PRIX/BTE Utilisé
1401-005 ½ 1,82 $ 89,10 $
1401-007 ¾ 1,91 $ 93,50 $ 5
TÉ 1401-010 1`` 2,50 $ 61,05 $ 4
1401-012 1¼ 3,94 $ 38,50 $
1401-015 1½ 4,46 $ 43,56 $
1401-020 2`` 8,75 $ 5,58 $

11 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Pas compris grand chose : pourrais-tu nous le reformuler autrement ?
    0
    1. danpoo Messages postés 39 Statut Membre
       
      j'ai une liste matériel de tout ce que je tiens stock. cette liste détail mon coûtant, mon détails, etc etc. donc sur une ligne j'ai plusieurs option de prix pour nous a l'interne.
      quand j'installe je prends en note ce qui a été pris sur le terrain et rendu a la maison je mets au propre avec cette liste. donc la dernière colonne ces la quantité utilisé quand j'ai terminer la liste je prends chaque ligne manuellement et la recopie dans une autre feuille pour n'avoir que les lignes qui on une quantité ajouter.
      La question est:
      est-ce possible que dès qu'il y a un ajout de quantité dans la dernière colonne que la ligne complète ou cellule sélectionner se recopie automatique dans une autre feuille
      0
    2. danpoo Messages postés 39 Statut Membre
       
      lexemple que javait donner plus haut ne c'est pas afficher correctement
      0
  2. danpoo Messages postés 39 Statut Membre
     


    je sais pas si l'image fonctionne mais bon.... si vous voyer j'ai besoin de recopier automatiquement les colonnes B-C-D-E (SI) M contient une valeur plus grande que 0

    ma liste de depart se trouve sous le nom ``Prix`` et la recopie doit se retrouver dans ``FACTURE``pas obligé de mettre la couleur dans les cellules j'en ai mis seulement pour vous montrer
    0
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Si j'ai bien interprété ton image, cela devrait faire ce que tu veux :
    Public Sub copie()
    Dim tbd
    Dim lig As Long, idx As Long, col As Long
    With Sheets("Prix")
        tbd = .Cells(1, 1).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, _
            .Cells(2, Columns.Count).End(xlToLeft).Column).Value
    End With
    With Sheets("FACTURE")
        lig = .UsedRange.Rows.Count + 1
        For idx = 1 To UBound(tbd)
            If IsNumeric(tbd(idx, 13)) And tbd(idx, 13) > 0 Then
                For col = 2 To 5
                    .Cells(lig, col).Value = tbd(idx, col)
                Next col
                lig = lig + 1
            End If
        Next idx
    End With
    End Sub

    Si tu lances plusieurs fois les lignes sont dupliquées.
    0
    1. danpoo Messages postés 39 Statut Membre
       
      super fonctionne!! merci!!
      si je peut peaufiner un peu, peut ton inclure l’entête permanente dans la macro comme sur la photo les 2 premières ligne serais vraiment génial.

      un gros merci pour votre aide c'est très apprécié!
      0
  4. danpoo Messages postés 39 Statut Membre
     
    si possible aussi garder mise en forme et tout les cadrages.
    mais si je pousse trop fort faut me le dire loll :)
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      peut ton inclure l’entête permanente
      J'espère avoir compris que tu veux toujours la copier mais toujours en-tête, c'est comme ceci :
      Public Sub copie()
      Dim tbd
      Dim lig As Long, idx As Long, col As Long
      With Sheets("Prix")
          tbd = .Cells(1, 1).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, _
              .Cells(2, Columns.Count).End(xlToLeft).Column).Value
          .Rows(1).Resize(2).Copy
      End With
      With Sheets("FACTURE")
          With .Cells(1, 1)
              .PasteSpecial Paste:=xlPasteAll
              .PasteSpecial Paste:=xlPasteValues
              .PasteSpecial Paste:=xlPasteFormats
              .PasteSpecial Paste:=xlPasteColumnWidths
          End With
          Application.CutCopyMode = False
          lig = .UsedRange.Rows.Count + 1
          For idx = 1 To UBound(tbd)
              If IsNumeric(tbd(idx, 13)) And tbd(idx, 13) > 0 Then
                  For col = 2 To 5
                      .Cells(lig, col).Value = tbd(idx, col)
                  Next col
                  lig = lig + 1
              End If
          Next idx
      End With
      End Sub
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danpoo Messages postés 39 Statut Membre
     
    est-t-il possible d'inclure plusieusr feuilles dans le code
    With Sheets ("Prix")

    Genre:
    With Sheets ("1") ("2") ("3") .........
    comment l'écrire si c'est possible
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Bien imaginée ta syntaxe, mais elle ne fonctionne pas.
      C'est possible de le faire mais il faut faire une boucle sur les feuilles sélectionnées, comme ceci par exemple :
      Public Sub copie()
      Dim lig As Long, idx As Long, col As Long
      Dim tbd, ndf, feu As Integer
      ndf = Split("Feuil1,Feuil2,Feuil3", ",")    'feuilles à copier
      For feu = 0 To UBound(ndf)
          With Sheets(ndf(feu))
              tbd = .Cells(1, 1).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, _
                  .Cells(2, Columns.Count).End(xlToLeft).Column).Value
              .Rows(1).Resize(2).Copy
          End With
          With Sheets("FACTURE")
              With .Cells(1, 1)
                  .PasteSpecial Paste:=xlPasteAll
                  .PasteSpecial Paste:=xlPasteValues
                  .PasteSpecial Paste:=xlPasteFormats
                  .PasteSpecial Paste:=xlPasteColumnWidths
              End With
              Application.CutCopyMode = False
              lig = .UsedRange.Rows.Count + 1
              For idx = 1 To UBound(tbd)
                  If IsNumeric(tbd(idx, 13)) And tbd(idx, 13) > 0 Then
                      For col = 2 To 5
                          .Cells(lig, col).Value = tbd(idx, col)
                      Next col
                      lig = lig + 1
                  End If
              Next idx
          End With
      Next feu
      End Sub
      0
  7. danpoo Messages postés 39 Statut Membre
     
    j'ai une erreur sur la ligne 9 soit:

    With Sheets(ndf(feu))

    j'ai ajouter mes feuilles je vous recopie le code

    Public Sub copie()
    Dim lig As Long, idx As Long, col As Long
    Dim tbd, ndf, feu As Integer
    ndf = Split("RACCORD ET COLLIERS,ÉLECTRONIQUE,TUYAUTERIE,ASPERSEURS ET BUSE,MICRO IRRIGATION,ACCESSOIRES") 'feuilles à copier
    For feu = 0 To UBound(ndf)
    With Sheets(ndf(feu))
    tbd = .Cells(1, 1).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, _
    .Cells(2, Columns.Count).End(xlToLeft).Column).Value
    .Rows(1).Resize(2).Copy
    End With
    With Sheets("FACTURE")
    With .Cells(1, 1)
    .PasteSpecial Paste:=xlPasteAll
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
    .PasteSpecial Paste:=xlPasteColumnWidths
    End With
    Application.CutCopyMode = False
    lig = .UsedRange.Rows.Count + 1
    For idx = 1 To UBound(tbd)
    If IsNumeric(tbd(idx, 14)) And tbd(idx, 14) > 0 Then
    For col = 2 To 14
    .Cells(lig, col).Value = tbd(idx, col)
    Next col
    lig = lig + 1
    End If
    Next idx
    End With
    Next feu
    End Sub
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Lorsque tu modifies pour remplacer par tes feuilles
      ndf = Split("Feuil1,Feuil2,Feuil3", ",")    'feuilles à copier

      Par
      ndf = Split("RACCORD ET COLLIERS,ÉLECTRONIQUE,TUYAUTERIE,ASPERSEURS ET BUSE,MICRO IRRIGATION,ACCESSOIRES") 'feuilles à copier 

      essaies de garder la syntaxe car si j'ai mis
      ", ",") 
      ce n'est pas pour enjoliver.
      0
  8. danpoo Messages postés 39 Statut Membre
     
    Voilà ca fonctionne cela copie et fait le tour de chaque feuille. Mais une fois terminer quand je vais dans ma feuille "FACTURE" j'ai mon entête ensuite j'ai 127 ligne vierge et ensuite j'ai la liste recopié. j'ai effacer et recommencer la copie 5 fois et j'ai toujours les même 127 lignes vierge.

    deuxième question si je peut me permettre :)
    j'ai 6 feuilles qui se recopie si une quantité ajouté
    mais j'ai une entête identique dans chaque feuille.
    est-il possible de répété chaque entête lorsque le programme change de feuille a copié. et si je mets disons la première ligne de chaque feuille en mode fusionner centrer est-il facile de programmer le code pour qu'il la prenne cette ligne. voici une image

    ne pas tenir compte de la premiere colonne je ne la copie pas dans le code j'ai 14 ligne total sauf enlevé la A qui me donne 13 lignes mais dans le code j'ai mis de 2 to 14
    P.S ne pas tenir compte du fait que sur cette exemple dans certaine cellule de la dernière colonne n'ai pas de quantité j'ai recopié manuellement pour exemple. Merci beaucoup pour votre aide c'est très apprécié!!
    0
  9. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    L'on va peut-être y arriver mais si tu avais posé complètement ta question et répondu à toutes mes questions, cela aurait été plus rapide. J'ai tenu compte de ton en-tête à 3 lignes mais comme tu veux aussi la largeur des colonnes il n'y aura que la dernière feuille qui aura raison, les autres s'aligneront car c'est ainsi dans excel.

    Public Sub copie()
    Dim lig As Long, idx As Long, col As Long
    Dim tbd, ndf, feu As Integer
    Application.DisplayAlerts = False
    ndf = Split("RACCORD ET COLLIERS,ÉLECTRONIQUE,TUYAUTERIE,ASPERSEURS ET BUSE,MICRO IRRIGATION,ACCESSOIRES", ",") 'feuilles à copier For feu = 0 To UBound(ndf)
        With Sheets("FACTURE")
            Cells.Clear
            lig = 1
        End With
    For feu = 0 To UBound(ndf)
        With Sheets(ndf(feu))
            tbd = .Cells(1, 1).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, _
                .Cells(2, Columns.Count).End(xlToLeft).Column).Value
            .Rows(1).Resize(3).Copy
        End With
        With Sheets("FACTURE")
            With .Cells(lig, 1)
                .PasteSpecial Paste:=xlPasteAll
                .PasteSpecial Paste:=xlPasteFormats
                .PasteSpecial Paste:=xlPasteColumnWidths
            End With
            Application.CutCopyMode = False
            lig = lig + 3
            For idx = 1 To UBound(tbd)
                If IsNumeric(tbd(idx, 13)) And tbd(idx, 13) > 0 Then
                    For col = 2 To 5
                        .Cells(lig, col).Value = tbd(idx, col)
                    Next col
                    lig = lig + 1
                End If
            Next idx
        End With
    Next feu
    Application.DisplayAlerts = True
    MsgBox lig - 1 & " lignes copiées"
    End Sub


    0
  10. danpoo Messages postés 39 Statut Membre
     
    j'ai copié coller tel quel est une erreur ressort
    voici limage de la ligne:


    Pour les largeurs des colonnes c'est pas tellement important je peut ajuster et/ou de toute façon les feuilles ont tous la même forme et largeur dans l’intégrale seul le contenu est changé.

    pour la ligne verte j'ai fusionné et centré les cellules 2 a 14 pour la simplicité de l'ajustement du mot étant inscrit en jaune a l'intérieur.

    j'ai ajouté cette ligne après ma demande du code je suis désolé pour les troubles supplémentaire occasionné. votre travail est apprécié!
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Tu as une feuille qui n'a que des données vides ?
      0
  11. danpoo Messages postés 39 Statut Membre
     
    Voilà cela fonctionne mais je doit démarrer la macro en étant dans une feuille vierge car si je démarre la macro en étant dans une des page a copié cela efface la feuilles dans laquelle je suis.

    Mais en étant dans la dernière feuille vierge que j'ai appeler macro :) et que je démarre la macro dans cette feuille tout est fonctionnel même la fenêtre qui me donne le nombre de ligne copié

    Merci! je vais tester ainsi!
    Beau Travail!!
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Au temps pour moi j'ai oublié un point dans ma modification (ligne 10) :
             .Cells.Clear

      Cela fonctionnera beaucoup mieux ainsi et tu peux lancer depuis n'importe qu'elle feuille.
      Désolé du contre temps.
      0
  12. danpoo Messages postés 39 Statut Membre
     
    Super la ça fonctionne bien merveilleux merci!!
    0