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 ?
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
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
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.
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
Hieu !! Bonjour !!!
Désolé il y a un Bp qui empêche le bouclage au delà de la première ligne.
Je ne suis pas expert et ne suis pas en mesure d'adapter ce code.
Je confirme que i=9
en attendant: Merci !
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 !!
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 !!
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+