trier des lignes en retranchant une valeur ?

assniok

XLDnaute Occasionnel
Bonjour a tous,

Je cherche une macro qui pourrait me permettre de trier des lignes d'une manière précise.

Chaque ligne correspond a une pièce type d'une certaine longueur, et avec une certaine quantité. (qté = colonne H et longueur = colonne I)

Cependant, je n'ai pas le droit de prendre plus de X pièces par ligne. Par exemple, si mon client me demande de mettre ces pièces par 25, je dois faire du copier / coller de ligne, en retranchant 25 pièces a chaque fois.

Par exemple, dans mon fichier, pour la première ligne ou j'ai 30 pièces, je devrais me retrouver avec une ligne de 25 pièces suivi d’une ligne de 5 pièces. Pour la ligne suivant, une de 25 pièces et une de 19 pièces, etc...

Si j’ai oublié quelque chose, dites le moi ;)

Quelqu’un pourrait m'aider à réaliser cette macro ?

Merci d’avance pour votre aide et bonne fin de journée.
 

Pièces jointes

  • exemple.xls
    28 KB · Affichages: 52
  • exemple.xls
    28 KB · Affichages: 48
  • exemple.xls
    28 KB · Affichages: 54

assniok

XLDnaute Occasionnel
Re : trier des lignes en retranchant une valeur ?

bonjour a tous,

je vois que mon sujet n'inspire pas grand monde :(

j'ai essayer de faire une macro mais ça ne fonctionne pas correctement...

je joins le fichier, dès fois que quelqu'un jette un oeil...

bonne journée
 

Pièces jointes

  • exemple.xls
    38.5 KB · Affichages: 39
  • exemple.xls
    38.5 KB · Affichages: 44
  • exemple.xls
    38.5 KB · Affichages: 44

hoerwind

XLDnaute Barbatruc
Re : trier des lignes en retranchant une valeur ?

Bonjour,

Fort souvent, lorsqu'il n'y a pas de réponse, c'est que la question n'est pas posée clairement.

Par exemple, dans mon fichier, pour la première ligne ou j'ai 30 pièces, je devrais me retrouver avec une ligne de 25 pièces suivi d’une ligne de 5 pièces.

Pour H14 = 30, où faut-il mettre 25 et 5 ?
Pour H21 = 44, où faut-il mettre 25 et 19 ?
Et où est-il précisé qu'il faut des ensembles de 25 ?
 

assniok

XLDnaute Occasionnel
Re : trier des lignes en retranchant une valeur ?

et bien, je souhaite inserer des lignes identiques en changeant la valeur (Quantité) automatiquement.

J'ai un peu de mal a expliquer car ne n'est pas facile mais je vais essayer d'etre plus clair ;)

pour la ligne 14, par exemple, j'aimerais qu'excel me copie toute la ligne en 15 par exemple (peu importe l'endroit) en retranchant 25 a la valeur 30. donc en affichant une ligne en 14 dont la quantité serait 25, et une en 15 ou la quantité serait 5.

et ainsi de suite pour toute les lignes... il faut que dans ma colonne H, le maxi soit 25. et ques les autres données ne changent pas...

Pour ce qui est de preciser qu'il faut des ensemble de 25 maxi, en effet j'ai peut etre omis d'en parler :(

c'est plus clair comme ça ?

en tout cas merci de ta réponse
 

hoerwind

XLDnaute Barbatruc
Re : trier des lignes en retranchant une valeur ?

Re,

Pour remplacer "30" par "25" en H14 il faut nécessairement une macro, et là je ne puis t'aider.

Par contre en laissant la ligne 14 intacte et en affichant les résultats sous cette ligne c'est faisable par formule.

A toi de voir.
 

assniok

XLDnaute Occasionnel
Re : trier des lignes en retranchant une valeur ?

je pense effectivement qu'il faut une macro (j'avais essayé avec l'enregistreur de faire quelque chose sous le bouton qui est en haut a droite dans mon fichier d'exemple mais je bloque au moment ou il faut retrancher ma valeur de 25).

je ne peux pas laisser la ligne intacte comme suggerer...

si quelqu'un pouvait m'aider ou m'aiguiller ce serait sympa
 

eriiic

XLDnaute Barbatruc
Re : trier des lignes en retranchant une valeur ?

Bonjour,

C'est vrai que ton fichier exemple n'est pas terrible, on a tous les tests que tu as fait. Un coup une tentative en verticale, plus loin une en horizontale...

Du coup, si tu ne veux pas absolument en vertical et en vba voici une proposition de ce qui est faisable par formule.
Exemple : assniok.xls

J'ai prévu qu'une référence avait toujours le même conditionnement et tu as une liste à remplir dans l'onglet 'listes'.
Il faut saisir ref et qté

eric
 

assniok

XLDnaute Occasionnel
Re : trier des lignes en retranchant une valeur ?

c'est vrai que je debute en vba et j'ai du mal...

je ne dois pas bien m'expliquer car ce n'est pas tout a fait ce que je souhaite.

Je joins mon fichier d'exemple ou j'ai rajoutè un onglet qui correspond au resultat de ce que je voudrais, c'est a dire transformer l'onglet 1 en l'onglet 2 via une macro.

ou la quantité maxi (colonne H) ne doit pas depasser 25.

J'espere que ça vous parlera plus...

merci pour votre aide
 

Pièces jointes

  • exemple.zip
    22.9 KB · Affichages: 23
  • exemple.zip
    22.9 KB · Affichages: 24
  • exemple.zip
    22.9 KB · Affichages: 17

assniok

XLDnaute Occasionnel
Re : trier des lignes en retranchant une valeur ?

personne ne peux m'aider par rapport a ce que l'enregistreur de macro ma donné ?

j'ai essayé de modifier pour obtenir ce que je voulais mais ça ne marche pas... lorsque je lance la macro, excel me rajoute des lignes a l'infini...

pour info, voici le code

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim Rw As Range
Dim Ligne As Long
Dim derLi As Long
Dim r As Long

' Sélectionne l'ensemble des données (utile pour qu'Excel ne "réfléchisse" pas sur les 65000 lignes)

Sheets("Feuil1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

' Boucle qui va passer sur chaque ligne de la sélection afin de déterminer si des lignes contiennent le flag voulu
' puis copie dans une deuxième feuille de calcul

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 8).Value >= 25 Then
Rw.Select
Selection.Copy
'Rows("15:15").Select
Selection.Insert Shift:=xlDown
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("H15").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C-25"
    Range("H15").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("H14").Select
    ActiveCell.FormulaR1C1 = "25"
    Range("H15").Select
    
    
End If

Next Rw

' Supression des lignes vierges dans les feuilles de calcul récemment constituées

Sheets("Feuil1").Activate

With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

MsgBox "Le fichier est prêt.", vbOKOnly, "Macro terminée"

End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87