Sélection automatique dune ligne lorsqu'un nombre est ajouter [Résolu/Fermé]

Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
- - Dernière réponse : 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 $
Afficher la suite 

11 réponses

Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729
0
Merci
Bonjour,

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


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
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729
0
Merci
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.
danpoo
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
-
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é!
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
si possible aussi garder mise en forme et tout les cadrages.
mais si je pousse trop fort faut me le dire loll :)
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729 -
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
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
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
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729 -
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
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
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
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729 -
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.
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
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é!!
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729
0
Merci
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


Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
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é!
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729 -
Bonjour,

Tu as une feuille qui n'a que des données vides ?
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
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!!
gbinforme
Messages postés
15079
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
3729 -
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.
Messages postés
37
Date d'inscription
vendredi 29 avril 2016
Statut
Membre
Dernière intervention
1 juillet 2017
0
Merci
Super la ça fonctionne bien merveilleux merci!!