XL 2013 Création d'une routine !?

Dicas

XLDnaute Junior
Bonjour à toutes et tous !!
Je travaille sur un gestionnaire de Stocks et réappros de médicaments.
Je cherche la routine qui saura agir consécutivement sur chaque enregistrement ainsi :
Si BM1>0; Copier BL1 en BK1 et effacer en BO1 et en BP1
Si non ; enregistrement suivant
Pour lequel :
Si BM2>0.................
J'ai fait l'erreur de copier BL et coller en BK la colonne entière entre lignes 9 et 75 en entraînant les valeurs zéro de toutes les lignes vides..... et je tourne en rond ...
Pouvez-vous m'aider ?
 

Pièces jointes

  • Classeur2.xlsm
    207.1 KB · Affichages: 43

Hieu

XLDnaute Impliqué
Salut,

Pas bien compris ton fichier...

Essaie quelque chose comme ça :
VB:
Sub mlk()
i = 1
Do
If Range("bm" & i) > 0 Then
    Range("bl" & i).Copy
    Range("bk" & i).PasteSpecial
    Range(Range("bo " & i), Range("bp" & i)).Clear
End If
i = i + 1
Loop Until IsEmpty(Range("h" & i))
End Sub
 

Paf

XLDnaute Barbatruc
Bonjour Dicas,

quelques difficultés à convertir votre classeur en XL 2003: plantages excel, puis un classeur où il semble que la première cellule 'intéressante' soit BM9, et aucune macro.

est ce normal ou est ce dû à un soucis de conversion ?

A+

une autre solution, à adapter:

Code:
Sub Dicas()
For i = 9 To Range("BM" & Rows.Count).End(xlUp).Row ' à adapter <==
    If Range("BM" & i) = 0 Then
        Range("BK" & i) = Range("BL" & i)
        Range(Range("BO" & i), Range("BP" & i)).ClearContents
    End If
Next
End Sub
 
Dernière édition:

Paf

XLDnaute Barbatruc
re,

Trouver qu'une feuille sans macro, la conversion a cafouillé, mais pas important voir la proposition de code rajoutée au post 3 ( et celle du post 2)

A+

Edit :
Bonjour et merci Yurperqod, je croyais que c'étais l'auteur de la conversation qui me répondait !!
 
Dernière édition:

Dicas

XLDnaute Junior
Hieu !! Bonjour !!!
Merci de ton aide!
J'ai une erreur de compilation d'entrée sur Sub mlk() et i = 1
La pièce jointe intègre ton code sous le bouton "Confirmation des Entrées Stock"
Pour pallier à mon imprécision... et répondre un peu à ta question...
Chaque ligne d'enregistrement comprend les infos suivantes (de gauche à droite)
La rubrique "En Cours" ce sont les chiffres qui précisent ce que détient personnellement le malade pour ses soins de la semaine (stock aval): sa consommation (déjà pris depuis qu'on lui a préparé son semainier) et son stock (reste à prendre à sa disposition) C'est suivit d'heures en heures.
La rubrique "stocks", sur laquelle on travaille la gestion et la mise à jour hebdomadaire du Stock (stock amont). Elle sert a vérifier constamment que les quantités nécessaires au prochain rechargement de semainier sont disponibles ou qu'en tout cas, elle le seront à temps. Elle sert aussi à gérer en les groupant les appros nécessaires avec une ou deux semaines d'avance.
La rubrique "Achats" répond à ces deux dernières nécessités en évaluant les besoins et les délais.
 

Pièces jointes

  • Classeur2 (1).xlsm
    696.4 KB · Affichages: 44

Hieu

XLDnaute Impliqué
Dans un module standard, ça évite les déclarations de variables
(ouhh, je sais, les puristes me diront, que c'est pas bien !!)

Après lecture du fichier excel, je dirai qu'il faut commencer à i=11 ??
 

Pièces jointes

  • Classeur2_v0.xlsm
    734.3 KB · Affichages: 47

Hieu

XLDnaute Impliqué
Là, ça marche !
Avec une tite modif, puisqu'on sait de où à où on loop, j'ai changé la boucle
Code:
Sub mlk()
Dim i As Integer
For i = 9 To Range("h65536").End(xlUp).Row
If Range("bm" & i) > 0 Then
    Range("bk" & i) = Range("bl" & i)
    Range(Range("bo" & i), Range("bp" & i)).ClearContents    ' cette ligne ne fonctionne pas
End If
Next i
End Sub
Il y avait un espace qui fasait bug le prog : Range("bo " & i) == > Corrected !!

edit :
voir post #3 !!
@Paf oups ^^ Dsl ^^
Pas vu. au temps pour moi.
Comme quoi, on a la meme facon de programmer !!
 

Pièces jointes

  • Classeur2_v1.xlsm
    733.6 KB · Affichages: 46
Dernière édition:

Dicas

XLDnaute Junior
Là, ça marche !
Avec une tite modif, puisqu'on sait de où à où on loop, j'ai changé la boucle
Code:
Sub mlk()
Dim i As Integer
For i = 9 To Range("h65536").End(xlUp).Row
If Range("bm" & i) > 0 Then
    Range("bk" & i) = Range("bl" & i)
    Range(Range("bo" & i), Range("bp" & i)).ClearContents    ' cette ligne ne fonctionne pas
End If
Next i
End Sub
Il y avait un espace qui fasait bug le prog : Range("bo " & i) == > Corrected !!

edit :
voir post #3 !!
@Paf oups ^^ Dsl ^^
Pas vu. au temps pour moi.
Comme quoi, on a la meme facon de programmer !!
 

Dicas

XLDnaute Junior
Bonjour aux uns !! Bonjour aux autres !!! et MERCI à tous !!
Je ne suis pas expert, je ne sais me repérer dans vos codes que par analogie... et ça rate souvent... Alors il y a des brides de votre conversation qui m'ont quelque peu échappées... Mais le tout est maintenant ficelé derrière un bouton et ça fonctionne à merveille !!!
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 695
Membres
105 511
dernier inscrit
karimdauphins