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.
.. mais n'est il pas possible d'utiliser la feuille "tablelots" en lieu est place de la feuille "tableproduit" avec une extraction sans doublon Pour concevoir la liste tableProduits ,
l'ideal est effectivement de partir des deux champs de la liste Donnée Filtre Elaboré Ext.Sans doublons... (c'est ce que j'ai fait machinalement même si là en fait il n'y avait que peu de Refproduits, mais dans ta vraie liste il doit y en avoir davantage...).
par exemple et une insertion
d'un nouveau produit-ref en fin de tableau?
L'essentiel est que chaque table reste bien distincte.
Laisser l'espace vide sous chaque table pour tirer parti des fonctionnalités sans dépendance à proximité. ...pouvoir formater et gèrer globalement chaque colonne et aussi à droite pour pouvoir facilement supprimer des lignes entières sans que la suppression dans l'une affecte l'autre.
;o) En clair c'est plus simple et moins risqué: une table<==>une feuille Mais toute alternative est possible.
Je travaille depuis 3 ou 4 jours sur une fonction VBA...
Si tu veux mener à bien ton projet pas de souci, distingue les sujets/questions selon les difficultés qui interviennent au fur et mesure de tes avancées.
Si tu as besoin de mettre un exemple tu sais où: http://cjoint.com
Si tu cherches des exemples, astuces ou méthodes avérées: http://excelabo.net
de là tu as aussi des liens vers les différents autres sites fréquentés par les aficionados de ce forum.
@bientôt.
-- LSteph
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
Bonsoir Luck82,
.. mais n'est il pas possible d'utiliser la feuille "tablelots" en lieu est place de la feuille
"tableproduit" avec une extraction sans doublon
Pour concevoir la liste tableProduits ,
l'ideal est effectivement de partir des deux champs de la liste
Donnée Filtre Elaboré Ext.Sans doublons... (c'est ce que j'ai fait
machinalement même si là en fait il n'y avait que peu de Refproduits,
mais dans ta vraie liste il doit y en avoir davantage...).
par exemple et une insertion
d'un nouveau produit-ref en fin de tableau?
L'essentiel est que chaque table reste bien distincte.
Laisser l'espace vide sous chaque table pour tirer parti des
fonctionnalités sans dépendance à proximité.
...pouvoir formater et gèrer globalement chaque colonne
et aussi à droite pour pouvoir facilement supprimer des lignes entières
sans que la suppression dans l'une affecte l'autre.
;o) En clair c'est plus simple et moins risqué:
une table<==>une feuille
Mais toute alternative est possible.
Je travaille depuis 3 ou 4 jours sur une fonction VBA...
Si tu veux mener à bien ton projet pas de souci,
distingue les sujets/questions selon les difficultés qui
interviennent au fur et mesure de tes avancées.
Si tu as besoin de mettre un exemple tu sais où: http://cjoint.com
Si tu cherches des exemples, astuces ou méthodes avérées:
http://excelabo.net
de là tu as aussi des liens vers les différents autres sites fréquentés
par les aficionados de ce forum.
@bientôt.
--
LSteph
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" <gmLSteph@gmail.com> a écrit dans le message de
news:1190392212.856085.262450@r29g2000hsg.googlegroups.com...
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
.. mais n'est il pas possible d'utiliser la feuille "tablelots" en lieu est place de la feuille "tableproduit" avec une extraction sans doublon Pour concevoir la liste tableProduits ,
l'ideal est effectivement de partir des deux champs de la liste Donnée Filtre Elaboré Ext.Sans doublons... (c'est ce que j'ai fait machinalement même si là en fait il n'y avait que peu de Refproduits, mais dans ta vraie liste il doit y en avoir davantage...).
par exemple et une insertion
d'un nouveau produit-ref en fin de tableau?
L'essentiel est que chaque table reste bien distincte.
Laisser l'espace vide sous chaque table pour tirer parti des fonctionnalités sans dépendance à proximité. ...pouvoir formater et gèrer globalement chaque colonne et aussi à droite pour pouvoir facilement supprimer des lignes entières sans que la suppression dans l'une affecte l'autre.
;o) En clair c'est plus simple et moins risqué: une table<==>une feuille Mais toute alternative est possible.
Je travaille depuis 3 ou 4 jours sur une fonction VBA...
Si tu veux mener à bien ton projet pas de souci, distingue les sujets/questions selon les difficultés qui interviennent au fur et mesure de tes avancées.
Si tu as besoin de mettre un exemple tu sais où: http://cjoint.com
Si tu cherches des exemples, astuces ou méthodes avérées: http://excelabo.net
de là tu as aussi des liens vers les différents autres sites fréquentés par les aficionados de ce forum.
@bientôt.
-- LSteph
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
luck82
Bonjour Lsteph;
Mercie pour le temps que vous avez passez sur mon problème. Je vais mettre en forme tous cela ce week end. Je pense que le résultat final sera intéressant.
Bonjour Lsteph;
Mercie pour le temps que vous avez passez sur mon problème.
Je vais mettre en forme tous cela ce week end.
Je pense que le résultat final sera intéressant.
Mercie pour le temps que vous avez passez sur mon problème. Je vais mettre en forme tous cela ce week end. Je pense que le résultat final sera intéressant.