Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide sur macro pour mise en forme format et texte

12 réponses
Avatar
luck82
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A et B
sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel très
fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de la
façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères blancs
et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au dessus.
exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et B3
par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente dans
la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et les
plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien n'indiquer
un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.

10 réponses

1 2
Avatar
LSteph
Bonjour,

Excellente approche: virer les fusions , c'est le mieux!

Renseigner toutes les lignes pour les yeux ou autres c'est beaucoup
mieux qqui'il en soit que ces horribles fusions qui handicapent les
fonctionnalités d'excel.

1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes
Oui commence par là



Edition Atteindres cellules vides
appuies sur = (pointes la Cellule d'au dessus celle de ref puis Ctrl+Entrée)
Une fois ceci fait

2) Faire en sorte que les lignes de caractères noir soit au centre



Nonon non non amha mauvaise idée! on a pas toujours un nombre impair et
si valeurs nombreuses on s'y perd
Mettre toujours la première ligne d'une section en noir et celle en
dessous en blanc.Ainsi c'est bien délimité et clair!
Voici pour toi cette petite macro qui pose la mefc voulue sur une plage
a2:M110 ici dans exemple :

Sub EffetFusion()

On Error Resume Next
With [a2:M110]
.Activate
.FormatConditions.Delete
On Error GoTo 0
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="¡"
.FormatConditions(1).Font.ColorIndex = 2
End With
End Sub

3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne



C''est une bonne façon mais pour systématiser faut voir.
Cela dépend de qui doit utiliser , on peut s'y astreindre c'est souvent
plus simple.. sinon et pour le point 4 (à éclaircir) aussi mets un
exemple plus précis et avec les conditions d'usage précisées dedans,
pour déposer ton fichier c'est là http://cjoint.com
suis le mode d'emploi et donne le lien obtenu ici ,
on verra ce qu'on peut

@+

lSteph

Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A et B
sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel très
fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de la
façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères blancs
et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au dessus.
exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et B3
par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente dans
la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et les
plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien n'indiquer
un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.






Avatar
luck82
Merci pour tes conseils.
Je vais essayer tous ca ce soir

"LSteph" a écrit dans le message de
news:efnsfuv%
Bonjour,

Excellente approche: virer les fusions , c'est le mieux!

Renseigner toutes les lignes pour les yeux ou autres c'est beaucoup
mieux qqui'il en soit que ces horribles fusions qui handicapent les
fonctionnalités d'excel.

1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes
Oui commence par là



Edition Atteindres cellules vides
appuies sur = (pointes la Cellule d'au dessus celle de ref puis
Ctrl+Entrée)

Une fois ceci fait

2) Faire en sorte que les lignes de caractères noir soit au centre



Nonon non non amha mauvaise idée! on a pas toujours un nombre impair et
si valeurs nombreuses on s'y perd
Mettre toujours la première ligne d'une section en noir et celle en
dessous en blanc.Ainsi c'est bien délimité et clair!
Voici pour toi cette petite macro qui pose la mefc voulue sur une plage
a2:M110 ici dans exemple :

Sub EffetFusion()

On Error Resume Next
With [a2:M110]
.Activate
.FormatConditions.Delete
On Error GoTo 0
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="¡"
.FormatConditions(1).Font.ColorIndex = 2
End With
End Sub

3) Lors d'un rajout de lot par insertion de ligne, autoriser
uniquement



l'insertion de ligne



C''est une bonne façon mais pour systématiser faut voir.
Cela dépend de qui doit utiliser , on peut s'y astreindre c'est souvent
plus simple.. sinon et pour le point 4 (à éclaircir) aussi mets un
exemple plus précis et avec les conditions d'usage précisées dedans,
pour déposer ton fichier c'est là http://cjoint.com
suis le mode d'emploi et donne le lien obtenu ici ,
on verra ce qu'on peut

@+

lSteph

Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A
et B


sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très


fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de
la


façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs


et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au
dessus.


exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et
B3


par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans


la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et
les


plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien
n'indiquer


un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.








Avatar
LSteph
Bonjour,

un petit oubli:

'....
Sélectionner supposons A2:n100
Edition Atteindre cellules vides
appuies sur = (pointes la Cellule d'au dessus celle de ref puis
Ctrl+Entrée)

Une fois ceci fait
Copier Coller Special valeur pour faire disparaître les formules.


'...

Merci pour tes conseils.
Je vais essayer tous ca ce soir

"LSteph" a écrit dans le message de
news:efnsfuv%
Bonjour,

Excellente approche: virer les fusions , c'est le mieux!

Renseigner toutes les lignes pour les yeux ou autres c'est beaucoup
mieux qqui'il en soit que ces horribles fusions qui handicapent les
fonctionnalités d'excel.

1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes
Oui commence par là



Edition Atteindres cellules vides
appuies sur = (pointes la Cellule d'au dessus celle de ref puis
Ctrl+Entrée)

Une fois ceci fait

2) Faire en sorte que les lignes de caractères noir soit au centre
Nonon non non amha mauvaise idée! on a pas toujours un nombre impair et


si valeurs nombreuses on s'y perd
Mettre toujours la première ligne d'une section en noir et celle en
dessous en blanc.Ainsi c'est bien délimité et clair!
Voici pour toi cette petite macro qui pose la mefc voulue sur une plage
a2:M110 ici dans exemple :

Sub EffetFusion()

On Error Resume Next
With [a2:M110]
.Activate
.FormatConditions.Delete
On Error GoTo 0
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="¡"
.FormatConditions(1).Font.ColorIndex = 2
End With
End Sub

3) Lors d'un rajout de lot par insertion de ligne, autoriser
uniquement



l'insertion de ligne
C''est une bonne façon mais pour systématiser faut voir.


Cela dépend de qui doit utiliser , on peut s'y astreindre c'est souvent
plus simple.. sinon et pour le point 4 (à éclaircir) aussi mets un
exemple plus précis et avec les conditions d'usage précisées dedans,
pour déposer ton fichier c'est là http://cjoint.com
suis le mode d'emploi et donne le lien obtenu ici ,
on verra ce qu'on peut

@+

lSteph

Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A
et B


sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très


fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de
la


façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs


et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au
dessus.


exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et
B3


par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans


la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et
les


plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien
n'indiquer


un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.












Avatar
luck82
Voila; je viens de tester la macro de Lsteph qui marche parfaitement bien et
qui répond 80% à mon problème.
Les autres 20% sont détaillés dans l'emple ci joint:
http://cjoint.com/?jurE2oUjrV

Encore merci à Lsteph pour sa macro.
Bonne soirée



"luck82" a écrit dans le message de
news:ux4MD5s%
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A et
B

sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très

fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de la
façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs

et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au dessus.
exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et
B3

par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans

la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et les
plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien n'indiquer
un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.





Avatar
LSteph
Bonsoir,

il faudrait que la macro copie en blanc la valeur E14 en E15 et F14


-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Lors qu'une insertion de ligne (pour rentrer un nouveau lot) il
faudrait de la macro autorise seulement l'insertion en dessous d'une
ligne contenant une valeur en noir


-Si insertion de ligne il y a
cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??

Par la suite je vais nommer les plages produit par des formules
du style ÞCALER(A1;EQUIV("HIV P23A5G4B9";B1:B10198;0)...


-A cemoment là pourquoi ne pas prévoir cela avant?

@+

lSteph





Voila; je viens de tester la macro de Lsteph qui marche parfaitement bien et
qui répond 80% à mon problème.
Les autres 20% sont détaillés dans l'emple ci joint:
http://cjoint.com/?jurE2oUjrV

Encore merci à Lsteph pour sa macro.
Bonne soirée



"luck82" a écrit dans le message de
news:ux4MD5s%
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X et
colonne C = lot du produit. Pour un produit et une ref il y a plusieurs
lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A et
B

sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer des
tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très

fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de la
façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs

et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de la
plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser uniquement
l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au dessus.
exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2 et
B3

par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans

la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et les
plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour les
nuls" je galère sérieusement sur ma macro et surtout sur les points 2 et
3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien n'indiquer
un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.









Avatar
luck82
Bonjour;
il faudrait que la macro copie en blanc la valeur E14 en E15 et F14
-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Je ne comprends pas très bien; la macro ne fait en quelque sorte qu'une mise

en forme format texte.
Cette recopie de valeur est nécessaire: si un utilisateur insert une
nouvelle ligne pour rentrer un nouveau lot et s'il oublie de renseigner les
cases prod et ref; il risque d'y avoir des problèmes pour faire des tries.

cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??
Les nouveau produits et ref sont insèrent à la fin du tableau.


Bonne journée


"LSteph" a écrit dans le message de
news:OpTYM78%
Bonsoir,

il faudrait que la macro copie en blanc la valeur E14 en E15 et F14


-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Lors qu'une insertion de ligne (pour rentrer un nouveau lot) il
faudrait de la macro autorise seulement l'insertion en dessous d'une
ligne contenant une valeur en noir


-Si insertion de ligne il y a
cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??

Par la suite je vais nommer les plages produit par des formules
du style ÞCALER(A1;EQUIV("HIV P23A5G4B9";B1:B10198;0)...


-A cemoment là pourquoi ne pas prévoir cela avant?

@+

lSteph





Voila; je viens de tester la macro de Lsteph qui marche parfaitement
bien et


qui répond 80% à mon problème.
Les autres 20% sont détaillés dans l'emple ci joint:
http://cjoint.com/?jurE2oUjrV

Encore merci à Lsteph pour sa macro.
Bonne soirée



"luck82" a écrit dans le message de
news:ux4MD5s%
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X
et



colonne C = lot du produit. Pour un produit et une ref il y a
plusieurs



lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A
et



B
sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer
des



tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très

fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de
la



façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs

et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de
la



plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser
uniquement



l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au
dessus.



exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2
et



B3
par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans

la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et
les



plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour
les



nuls" je galère sérieusement sur ma macro et surtout sur les points 2
et



3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien
n'indiquer



un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.











Avatar
LSteph
Bonjour,

Non! la macro pose une mise en forme conditionnelle sur la feuille

voici le procèdé manuellement
sur selection de a2:e:1000 (par exemple)
Menu Format

Mise en forme conditionnelle
La valeur de la cellule ...est égale à...A1
Dans la même fenêtre bouton Format Police choisir couleur Blanc

Par suite dans la zone concernée si l'utilisateur inscrit
un texte ou valeur identique à celui d'au dessus, la police sera en
blanc. Si c'est différent, la police sera en noir.

cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??
Les nouveau produits et ref sont insèrent à la fin du tableau.

+ ...


nouvelle ligne pour rentrer un nouveau lot et s'il oublie de renseigner les
cases prod et ref; il risque d'y avoir des problèmes pour faire des tries



Qu'as tu prévu pour garantir la certitude qu'une insertion est effectuée
avec l'intention de remplir une ref ou un lot...?

! je verrais bien un UserForm pour remplir tout cela
avec pour options:
Ajouter un Lot (TextBox) en lui associant Ref=produit (ComboBox)
(Une table des produits existants avec leur Ref est nécessaire)
Créer une Ref..?? => Ajouter à la Table ref Produit

Cordialement.

lSteph



Bonjour;
il faudrait que la macro copie en blanc la valeur E14 en E15 et F14
-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Je ne comprends pas très bien; la macro ne fait en quelque sorte qu'une mise

en forme format texte.
Cette recopie de valeur est nécessaire: si un utilisateur insert une
nouvelle ligne pour rentrer un nouveau lot et s'il oublie de renseigner les
cases prod et ref; il risque d'y avoir des problèmes pour faire des tries.

cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??
Les nouveau produits et ref sont insèrent à la fin du tableau.


Bonne journée


"LSteph" a écrit dans le message de
news:OpTYM78%
Bonsoir,

il faudrait que la macro copie en blanc la valeur E14 en E15 et F14


-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Lors qu'une insertion de ligne (pour rentrer un nouveau lot) il
faudrait de la macro autorise seulement l'insertion en dessous d'une
ligne contenant une valeur en noir


-Si insertion de ligne il y a
cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??

Par la suite je vais nommer les plages produit par des formules
du style ÞCALER(A1;EQUIV("HIV P23A5G4B9";B1:B10198;0)...
-A cemoment là pourquoi ne pas prévoir cela avant?


@+

lSteph





Voila; je viens de tester la macro de Lsteph qui marche parfaitement
bien et


qui répond 80% à mon problème.
Les autres 20% sont détaillés dans l'emple ci joint:
http://cjoint.com/?jurE2oUjrV

Encore merci à Lsteph pour sa macro.
Bonne soirée



"luck82" a écrit dans le message de
news:ux4MD5s%
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X
et



colonne C = lot du produit. Pour un produit et une ref il y a
plusieurs



lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne A
et



B
sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer
des



tries ou autres (Renseigner toutes les lignes donne un résultat visuel
très

fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro de
la



façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors renseigner
toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs

et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de
la



plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser
uniquement



l'insertion de ligne en dessous de la valeur en noir ( dans cet exemple
l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au
dessus.



exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2
et



B3
par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref pressente
dans

la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa et
les



plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour
les



nuls" je galère sérieusement sur ma macro et surtout sur les points 2
et



3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien
n'indiquer



un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.














Avatar
luck82
Bonsoir;

Non! la macro pose une mise en forme conditionnelle sur la feuille
En effet; je suis allé un petit vite dans ma réponse.


Qu'as tu prévu pour garantir la certitude qu'une insertion est effectuée
avec l'intention de remplir une ref ou un lot...?
Rien. Mais de toute façon, si un utilisateur insert une ligne sans la

renseigner, lors d'un trie (key1=produit , key2=ref , key3=lot... ce qui est
prévus d'ailleurs), la ligne vide ce retrouvera en fin de tableau donc pas
d'importance. Là ou c'est grave c'est si l'utilisateur insert une ligne et
renseigne seulement la cellule lot; dans ce cas, lors d'un trie cette ligne
ce retrouvera en fin de tableau sans que l'on chasse à qui appartient le
lot.
De toute manière les seules fois ou l'utilisateur insert une nouvelle ligne,
c'est pour renseigner un lot dont le produit-ref existe déjà. La création
d'un nouveau produit-ref ce fait en fin de tableau et donc sans insertion de
lignes.
La seul façon de garantir la cohérence de la table c'est de renseigner
automatiquement les cellules produit et ref (avec la valeur immédiatement
supérieur) après que l'utilisateur est inseré une ligne pour rentrer un
nouveau lot.

Ce travail devra ce faire par macro avec 2 approches différentes:
1) Soit renseigner automatiquement la cellule produit et ref (avec la valeur
immédiatement supérieur) après que l'utilisateur est inséré une ligne et
renseigné la cellule lot.
2) soit obliger l'utilisateur a renseigner la cellule produit et ref si
celui ci a inséré une ligne et renseigner un lot.
j'ai une préférence pour le point 1
Ici, l'aspect l'approche données/validation n'est pas possible puisque les
colonnes produit et ref dispose déjà de cet outils.

! je verrais bien un UserForm pour remplir tout cela
avec pour options:
C'est peut être un peu long à faire et pas forcément simple a gérer surtout

si des utilisateurs néophytes sont amené à modifier cet useform pour rentrer
des nouveaux produit et ref.

Voilà; j'espère avoir été assez clair dans mes réponses.


"LSteph" a écrit dans le message de
news:OA6OA0B$
Bonjour,

Non! la macro pose une mise en forme conditionnelle sur la feuille

voici le procèdé manuellement
sur selection de a2:e:1000 (par exemple)
Menu Format

Mise en forme conditionnelle
La valeur de la cellule ...est égale à...A1
Dans la même fenêtre bouton Format Police choisir couleur Blanc

Par suite dans la zone concernée si l'utilisateur inscrit
un texte ou valeur identique à celui d'au dessus, la police sera en
blanc. Si c'est différent, la police sera en noir.

cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??
Les nouveau produits et ref sont insèrent à la fin du tableau.

+ ...


nouvelle ligne pour rentrer un nouveau lot et s'il oublie de renseigner
les



cases prod et ref; il risque d'y avoir des problèmes pour faire des
tries




Qu'as tu prévu pour garantir la certitude qu'une insertion est effectuée
avec l'intention de remplir une ref ou un lot...?

! je verrais bien un UserForm pour remplir tout cela
avec pour options:
Ajouter un Lot (TextBox) en lui associant Ref=produit (ComboBox)
(Une table des produits existants avec leur Ref est nécessaire)
Créer une Ref..?? => Ajouter à la Table ref Produit

Cordialement.

lSteph



Bonjour;
il faudrait que la macro copie en blanc la valeur E14 en E15 et F14
-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Je ne comprends pas très bien; la macro ne fait en quelque sorte qu'une

mise


en forme format texte.
Cette recopie de valeur est nécessaire: si un utilisateur insert une
nouvelle ligne pour rentrer un nouveau lot et s'il oublie de renseigner
les


cases prod et ref; il risque d'y avoir des problèmes pour faire des
tries.



cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??
Les nouveau produits et ref sont insèrent à la fin du tableau.


Bonne journée


"LSteph" a écrit dans le message de
news:OpTYM78%
Bonsoir,

il faudrait que la macro copie en blanc la valeur E14 en E15 et F14


-Si tu laisses la mefc tel que dans la macro ce ne sera pas nécessaire.

Lors qu'une insertion de ligne (pour rentrer un nouveau lot) il
faudrait de la macro autorise seulement l'insertion en dessous d'une
ligne contenant une valeur en noir


-Si insertion de ligne il y a
cela peut très bien être Nouveau Produit ou Nouvelle ref....!!??

Par la suite je vais nommer les plages produit par des formules
du style ÞCALER(A1;EQUIV("HIV P23A5G4B9";B1:B10198;0)...
-A cemoment là pourquoi ne pas prévoir cela avant?


@+

lSteph





Voila; je viens de tester la macro de Lsteph qui marche parfaitement
bien et


qui répond 80% à mon problème.
Les autres 20% sont détaillés dans l'emple ci joint:
http://cjoint.com/?jurE2oUjrV

Encore merci à Lsteph pour sa macro.
Bonne soirée



"luck82" a écrit dans le message de
news:ux4MD5s%
Bonsoir;

J'ai un tableau excel colonne A = nom du produit X, colonne B = ref X
et



colonne C = lot du produit. Pour un produit et une ref il y a
plusieurs



lot.
Donc actuellement s'il y a 3 lots pour le produit X ref X la colonne
A





et
B
sont fusionnées sur 3 lignes...; pas pratique du tout pour effectuer
des



tries ou autres (Renseigner toutes les lignes donne un résultat
visuel





très
fatigant pour les yeux).


C'est pourquoi je voudrai traiter le problème par une approche macro
de





la
façon suivante:
1) S'il y a 3 lots (par exemple en position C1, C2,C3) alors
renseigner





toutes les lignes de la colonne A et B ( 2 lignes avec du caractères
blancs

et 1 avec du caractère noirs).
2) Faire en sorte que les lignes de caractères noir soit au centre de
la



plage (dans cet exemple en A2 et B2).
3) Lors d'un rajout de lot par insertion de ligne, autoriser
uniquement



l'insertion de ligne en dessous de la valeur en noir ( dans cet
exemple





l'insertion et sera uniquement possible en ligne 3).
4) Lorsque l'on renseigne un nouveau lot dans la colonne C (après une
insertion de ligne par exemple) renseigner automatiquement la ligne
équivalente dans la colonne A et B par la valeur immédiatement au
dessus.



exemple: si on saisit un nouveau lot en C3 alors renseigner A3 par A2
et



B3
par B2.
3) Boucler l'opération 2 sur tous les autres produits et ref
pressente





dans
la table.

Remarque: on considère les noms des produits et les ref comme des
identifiant unique; pour une ref il n'y a d'un produit et vis versa
et





les
plages de cellules sont adjacentes.

Voilà mon problème. N'étant qu'à la page 126 de "VBA pour excel pour
les



nuls" je galère sérieusement sur ma macro et surtout sur les points 2
et



3.
Alors si quelqu'un peut ne donner un petit coup de main ou bien
n'indiquer



un site contenant un exemple de macro proche de mon problème, je l'en
remercie beaucoup par avance.
















Avatar
lSteph
Bonsoir,

Voici dans l'idée ce que j'envisageais fort simplement, exemple ici:

http://cjoint.com/?jvsvliaSfc


Outre la mefc qui est posée ici dans Formats, un petit userform pour
saisir les lots
deux feuilles une pour la table des Lots l'autre pour la table
RefProduit

(Code pour référence ci-en bas)

Cordialement.

--
LSteph

'''''dans code Userform1
Private Sub Annuler_Click()
Unload Me
End Sub

Private Sub ComboBox1_Change()

TextBox2.Value = ComboBox1
TextBox3.Value = Feuil2.Range("b3", Feuil2.[b65536].End(3)) _
.Cells(ComboBox1.ListIndex + 1)
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()
Feuil1.Activate
With Feuil2
ComboBox1.RowSource = Feuil2.Name & "!" & .Range("a3", .
[b65536].End(3)).Address
End With
End Sub

Private Sub Validation_Click()
Dim last As Long, NumLot As Long
last = [a65536].End(xlUp)(2).Row

If Len(ComboBox1) = 0 Then
MsgBox "saisie incomplète"
ComboBox1.SetFocus: Exit Sub
End If
On Error Resume Next
NumLot = CLng(TextBox1)
On Error GoTo 0
If NumLot = 0 Then
MsgBox "saisie non conforme N° Lot "
TextBox1.SetFocus: Exit Sub
End If

Cells(last, 1) = TextBox2
Cells(last, 2) = TextBox3
Cells(last, 3) = NumLot
Unload Me: Call TriTable
End Sub




'''''dans module1
Option Explicit
Sub TriTable()

ActiveCell.Activate
[a2].CurrentRegion.Sort _
Key1:=Range("A3"), Order1:=xlAscending, _
Key2:=Range("C3"), Order2:=xlAscending, _
Header:=xlGuess, Orientation:=xlTopToBottom
End Sub
Avatar
luck82
Mille fois merci; c'est plus que ce que j'en espéré.
Je ne soupçonnais pas une telle puissance dans l'userforme.

Il est vrais que j'ai beaucoup progressé avec excel (sans pour autant être
un killer) grâce a ce groupe de discussion mais en VBA je suis encore un
vrais bleu.

Bon je sais je chipotte un peu mais n'est il pas possible (dans votre
exemple) d'utiliser la feuille "tablelots" en lieu est place de la feuille
"tableproduit" avec une extraction sans doublon par exemple et une insertion
d'un nouveau produit-ref en fin de tableau?
D'autre part il est toujours possible (en manuelle: clique droit
insertion...) d'insérer une ligne, de renseigner le lot sans pour autant
renseigner la case produit et ref; c'est une situation qui est toujours
possible.
Je travail depuis 3 ou 4 jours sur une fonction VBA du style
"ActiveSheet.Protect AllowInsertingRows:úlse" mais sans obtenir de
résultats. N'est il pas possible d'intégrer dans les macros un truc du même
style?

Bon c'est du détail mais je suis quand même preneur de votre fantastique
userforme.





"lSteph" a écrit dans le message de
news:
Bonsoir,

Voici dans l'idée ce que j'envisageais fort simplement, exemple ici:

http://cjoint.com/?jvsvliaSfc


Outre la mefc qui est posée ici dans Formats, un petit userform pour
saisir les lots
deux feuilles une pour la table des Lots l'autre pour la table
RefProduit

(Code pour référence ci-en bas)

Cordialement.

--
LSteph

'''''dans code Userform1
Private Sub Annuler_Click()
Unload Me
End Sub

Private Sub ComboBox1_Change()

TextBox2.Value = ComboBox1
TextBox3.Value = Feuil2.Range("b3", Feuil2.[b65536].End(3)) _
.Cells(ComboBox1.ListIndex + 1)
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()
Feuil1.Activate
With Feuil2
ComboBox1.RowSource = Feuil2.Name & "!" & .Range("a3", .
[b65536].End(3)).Address
End With
End Sub

Private Sub Validation_Click()
Dim last As Long, NumLot As Long
last = [a65536].End(xlUp)(2).Row

If Len(ComboBox1) = 0 Then
MsgBox "saisie incomplète"
ComboBox1.SetFocus: Exit Sub
End If
On Error Resume Next
NumLot = CLng(TextBox1)
On Error GoTo 0
If NumLot = 0 Then
MsgBox "saisie non conforme N° Lot "
TextBox1.SetFocus: Exit Sub
End If

Cells(last, 1) = TextBox2
Cells(last, 2) = TextBox3
Cells(last, 3) = NumLot
Unload Me: Call TriTable
End Sub




'''''dans module1
Option Explicit
Sub TriTable()

ActiveCell.Activate
[a2].CurrentRegion.Sort _
Key1:=Range("A3"), Order1:=xlAscending, _
Key2:=Range("C3"), Order2:=xlAscending, _
Header:=xlGuess, Orientation:=xlTopToBottom
End Sub
1 2