Bonjour,
Je cherche à créer un classeur Excel me permettent de faire une commande facilement.
Pouvez-vous m'aider?
Version imprimable
Bonjour,
Je cherche à créer un classeur Excel me permettent de faire une commande facilement.
Pouvez-vous m'aider?
Bonjour,
Si j'ai bien compris, à chaque appui sur le bouton, on ajoute une ligne supplémentaire de la feuille "Consommables".
Le code
Le fichierCode:
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 Sub Tri() Dim Plage As Range Dim e Dim f1 As Worksheet, f2 As Worksheet Application.ScreenUpdating = False Set f1 = Sheets("Commande") Set f2 = Sheets("Consommables") x = f1.Range("C" & Rows.Count).End(xlUp).Row + 1 With f2 Set Plage = .Range("E2:E" & .Range("C" & Rows.Count).End(xlUp).Row) For Each e In Plage If e.Value >= 1 And f2.Cells(e.Row, "G") <> "x" Then f1.Range(f1.Cells(f1.Range("G2"), "A"), f1.Cells(f1.Range("G2"), "E")).Value = f2.Range(f2.Cells(e.Row, "A"), f2.Cells(e.Row, "E")).Value f2.Cells(e.Row, "G") = "x" f1.Range("G2") = f1.Range("G2") + 1 Set Plage = Nothing Set f1 = Nothing Set f2 = Nothing Exit Sub End If Next e End With Set Plage = Nothing Set f1 = Nothing Set f2 = Nothing End Sub Sub Effacer() Dim f1 As Worksheet, f2 As Worksheet Application.ScreenUpdating = False Set f1 = Sheets("Commande") Set f2 = Sheets("Consommables") f1.Range("A10:E1000").ClearContents f1.Range("G2") = 10 f2.Columns(7).ClearContents Set f1 = Nothing Set f2 = Nothing End Sub
Pièce jointe 580801
Cdlt
Salut,
Merci de ton aide pour le bouton "effacer".
Je souhaitais que le bouton "actualiser" ajoute l'ensemble des lignes dont la quantité (colonne E) soit égale ou supérieur a 1.
Je vais donc essayer de modifier le code ^^
Cependant si quelqu'un a une idée je prends aussi car je suis vraiment un débutant :/
Bonjour,
Curieusement, une partie de votre demande initiale a disparu, il me semble bien qu'il était question que l'appui sur le bouton "Actualiser" devait recopier l'ensemble des données de la feuille "Consommables" (dont la quantité était >= à 1), vers la feuille "Commande", puis de ne conserver que la ligne 10 (la première) et d'effacer toutes les autres. Puis lors d'un second appui sur le bouton d'afficher la ligne suivante.
Le code que j'ai fourni reproduit exactement cela, à chaque clic sur le bouton , il se rajoute une ligne de la feuille "Consommables".
De plus pour repartir à zéro, j'avais ajouté un bouton "Effacer" pour recommencer. C'est la seule chose que vous avez retenu, et vous avez repris votre code initial pour lequel vous aviez demandé de l'aide, bizarre non!
Il semblerait maintenant que vous vouliez la totalité du tableau des consommables (dont les quantités sont >=1), pourquoi ce changement?
Alors si mon code ne correspond pas à vos attentes, réexpliquez clairement afin que l'on fournisse une réponse adaptée.
Permettez-moi avant tout de demandez quelques précisions:
-1) Pourquoi copier l'ensemble des lignes dont la quantité est >=1 pour ne conserver que la première et effacer les autres par la suite. Par analogie et pour suivre votre raisonnement, si vous résidez dans un immeuble de 20 étages et que vous habitiez au 1er, vous montez à chaque fois les 20 étages puis redescendez pour vous arrêter au 1er? Vous en conviendrez que cela n'a pas de sens et pourtant c'est ce que vous avez demandé initialement.
-2) Les quantités inscrites dans la colonnes E de la feuille "Consommables", sont-elles au format numérique ou bien texte?, si c'est en numérique, il est inutile de mettre des guillemets dans l'expression If e.Value >= "1".
-3) Pour recopier des valeurs d'un tableau vers un autre, inutile de recopier les lignes entières, seule la partie correspondant à la largeur du tableau est à recopier.
Vous vous dites débutant, mais vous ne suivez pas ce que l'on vous propose et persistez à reprendre votre code.
Maintenant, si vous voulez recopier l'ensemble des lignes dont la quantité est >=1, alors voici le code (le bouton "effacer " est supprimé, à chaque appui sur le bouton "Actualiser" les données précédentes sont effacées")
Le fichierCode:
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 Sub Tri() Dim Plage As Range Dim e Dim f1 As Worksheet, f2 As Worksheet Application.ScreenUpdating = False Set f1 = Sheets("Commande") Set f2 = Sheets("Consommables") Effacer 'effacement des précédents collages x = f1.Range("C" & Rows.Count).End(xlUp).Row + 1 'dernière ligne With f2 Set Plage = .Range("E2:E" & .Range("C" & Rows.Count).End(xlUp).Row) 'la plage de données For Each e In Plage If e.Value >= 1 Then 'Si la quantité est >=1 f1.Range(f1.Cells(f1.Range("G2"), "A"), f1.Cells(f1.Range("G2"), "E")).Value = f2.Range(f2.Cells(e.Row, "A"), f2.Cells(e.Row, "E")).Value 'copie des données f1.Range("G2") = f1.Range("G2") + 1 'ligne suivante End If Next e End With Set Plage = Nothing Set f1 = Nothing Set f2 = Nothing End Sub Sub Effacer() Dim f1 As Worksheet, f2 As Worksheet Application.ScreenUpdating = False Set f1 = Sheets("Commande") Set f2 = Sheets("Consommables") f1.Range("A10:E1000").ClearContents f1.Range("G2") = 10 f2.Columns(7).ClearContents Set f1 = Nothing Set f2 = Nothing End Sub
Pièce jointe 580873
Si ce n'est pas encore ça, reformulez votre demande.
Cdlt