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

Résolu/Fermé
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017 - 4 août 2016 à 18:38
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017 - 26 août 2016 à 18:16
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 $
A voir également:

11 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 août 2016 à 22:42
Bonjour,

Pas compris grand chose : pourrais-tu nous le reformuler autrement ?
0
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
5 août 2016 à 18:27
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
5 août 2016 à 18:29
lexemple que javait donner plus haut ne c'est pas afficher correctement
0
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
12 août 2016 à 17:02


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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 août 2016 à 23:20
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
22 août 2016 à 16:43
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
22 août 2016 à 17:16
si possible aussi garder mise en forme et tout les cadrages.
mais si je pousse trop fort faut me le dire loll :)
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
22 août 2016 à 21:48
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
23 août 2016 à 18:51
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
23 août 2016 à 21:45
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
24 août 2016 à 02:32
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
24 août 2016 à 08:59
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
Modifié par danpoo le 24/08/2016 à 15:11
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
24 août 2016 à 21:50
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
25 août 2016 à 00:11
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 août 2016 à 08:14
Bonjour,

Tu as une feuille qui n'a que des données vides ?
0
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
25 août 2016 à 14:18
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
Modifié par gbinforme le 25/08/2016 à 18:38
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
danpoo Messages postés 37 Date d'inscription vendredi 29 avril 2016 Statut Membre Dernière intervention 1 juillet 2017
26 août 2016 à 18:16
Super la ça fonctionne bien merveilleux merci!!
0