XL 2010 UserForm, menu déroulant cascade et enrichir une base de donnée

Virginie17d

XLDnaute Occasionnel
Bonjour à tous,

J’ai de nouveau besoin de votre aide précieuse car je bloque sur des codes pourtant simple mais sans résultat.

Contexte : Tableau de données de facturation (données sensible standardisées),
Page 1 et Page 2 sont les feuilles de traitement
Data, sont les données de mes menus déroulants
NePasModifier Page1 et Page 2, sont les données brut avant de traitement, ce qui permet de remettre les Pages 1et 2 à l'initial avant traitement

  • Action de mise en page via le Ruban Va Synthétique /Mise en page/Page1 (Tout fonctionne, l’optimisation des codes n’est pas la priorité pour l’instant.)
  • UserForm sur le Ruban VA Synthétique/Traitement VA / Page1


Mon problème est les Codes du UserForm

AnalyseSupport = combobox, les valeurs du menu son dans l’onglet Data (J8 :J30), lors de la saisie dans le formulaire cette donnée doit venir alimenter la colonne « F » (Après la mise en page)

Acteur =Combobox, les valeurs du menu son dans l’onglet Data (K8 :K30), lors de la saisie dans le formulaire cette donnée doit venir alimenter la colonne « F ». La valeur « Acteur » devra être pré-défini en fonction de la valeur choisie dans « AnalyseSupport » (Ex : J8 =K8, J9=K9)

Dossier = TextBox, la valeur doit est reprise dans le tableau dans la colonne « C » en fonction de la liste de traitement. On imagine je clique sur une ligne, j’ouvre le formulaire et la valeur se pré-remplie

Client = TextBox, la valeur doit est reprise dans le tableau dans la colonne « B » en fonction de la liste de traitement. On imagine je clique sur une ligne, j’ouvre le formulaire et la valeur se pré-remplie.

Dans votre aide, merci de spécifié le chemin d’accès des corrections ou mieux le faire sur le fichier et mettre une annotation pour définir chaque action

L’action est la même sur la Page 2 à l’exception qu’il n’y a que le textbox du commentaire quant à AGENT, TAN, TCN sont des valeurs du tableau à remonter dans le formulaire selon la ligne de traitement.

Sur les deux formulaires les boutons

Valider : devra sortir du formulaire et repositionner en cellule A2

Suivant : devra placer dans la ligne dessous en colonne « F », (je viens de traiter la ligne 3 (F2,G2 etH2 on été renseignés, je me place en F3)

Exit : sort du formulaire

Je vous remercie de votre indulgence et de votre aide, Si toutefois je n'ai pas été assez claire, n'hésitez pas à revenir vers moi.

Merci par avance

VirginieD
 

Pièces jointes

  • FICHIER TEST VA (VDO_19122020).xlsm
    179.7 KB · Affichages: 79

ChTi160

XLDnaute Barbatruc
Bonjour Virginie
un fichier modifié
voir DoubleClick dans Colonne "A" des feuilles "Page 1" et "Page 2"
Bons tests tu me tiens au courant y'a surement des Bugs ! lol
jean marie
 

Pièces jointes

  • FICHIER TEST VA (VDO_28122020)-Chti160.xlsm
    151.5 KB · Affichages: 18

Virginie17d

XLDnaute Occasionnel
Bonjour Virginie
un fichier modifié
voir DoubleClick dans Colonne "A" des feuilles "Page 1" et "Page 2"
Bons tests tu me tiens au courant y'a surement des Bugs ! lol
jean marie
Merci c'est parfait, et je n'ai pas de bug, par contre j'ai omis de préciser que si la valeur de la colonne 6 Page 1 est xx dans ce cas la cellule de la colonne 6 et 7 devront être Orange.

J'ai essayé d'intégrer ce code au bouton valider du userForm et au module5_Police mais il ne fonctionne pas
Sub Color_Cells()

Sheets("Page 1").Select
For i = 2 To 60
If Cells(i, 6) = "Billets émis après 20h" & "Case Viaxeo" Then
Range(Cells(i, 6), Cells(i, 7)).Interior.Color = RGB(255, 164, 29)
Else
Range(Cells(i, 1), Cells(i, 8)).Interior.Color = RGB(255, 255, 255)
End If

Next i
'Une boucle parcourt les cellules de la plage F2:F60. Si la valeur contenue dans une de ces cellules est égale à ...
For i = 2 To 60
If Cells(i, 6) = "Billets émis après 20h" & "Case Viaxeo" Then
'La plage comprise entre les colonnes F et G de la ligne concernée est colorée en orange :
Range(Cells(i, 6), Cells(i, 7)).Interior.Color = RGB(255, 164, 29)
'Dans le cas contraire, cette même plage reste en blanche :
Else
Range(Cells(i, 1), Cells(i, 8)).Interior.Color = RGB(255, 255, 255)
End If
Next
End Sub

Je suis sure qu'il y a plus simple

Merci de ton aide
 

ChTi160

XLDnaute Barbatruc
Bonjour Virginie
arff ne sachant pas ou n'ayant pas compris , quand , lancer cette procédure !
voilà ce que j'ai fait : on effectue la recherche lors de l'activation de la feuille "Page 1"
VB:
Private Sub Worksheet_Activate()
With Sheets("Page 1")
'on définie la dernière ligne vide de la colonne "F" en partant du bas vers le Haut
DerLgn = .Cells(100, 6).End(xlUp).Row 'j'ai mis 100 (ligne de départ de la recherche de Ligne Vide) a voir
For I = 2 To DerLgn 'Boucle sur les Lignes de la plage
If Cells(I, 6) = "Billets émis après 20h Case Viaxeo" Then 'si valeur Ok ( Attention a la case de la leur cherchée)
  .Range(Cells(I, 6), Cells(I, 7)).Interior.Color = RGB(255, 164, 29) 'On colore
Else
  .Range(Cells(I, 1), Cells(I, 8)).Interior.Color = RGB(255, 255, 255) 'sinon Blanc
End If
Next I
End With
End Sub

je ne sais pas comment est arrivée ce "Billets émis après 20h Case Viaxeo" dans la Colonne 6 "F"
ou alors c'est la concaténation des Deux Colonnes Cells(I, 6) & Cells(I, 7) qui donne
"Billets émis après 20h Case Viaxeo" ?????????????????????????????????????????
car tu as mis
VB:
If Cells(i, 6) = "Billets émis après 20h" & "Case Viaxeo"
pas Clair tout ça Lol !
tu me dis !
jean marie
 
Dernière édition:

Virginie17d

XLDnaute Occasionnel
Bonjour Virginie
arff ne sachant pas ou n'ayant pas compris , quand , lancer cette procédure !
voilà ce que j'ai fait : on effectue la recherche lors de l'activation de la feuille "Page 1"
VB:
Private Sub Worksheet_Activate()
With Sheets("Page 1")
'on définie la dernière ligne vide de la colonne "F" en partant du bas vers le Haut
DerLgn = .Cells(100, 6).End(xlUp).Row 'j'ai mis 100 (ligne de départ de la recherche de Ligne Vide) a voir
For I = 2 To DerLgn 'Boucle sur les Lignes de la plage
If Cells(I, 6) = "Billets émis après 20h Case Viaxeo" Then 'si valeur Ok ( Attention a la case de la leur cherchée)
  .Range(Cells(I, 6), Cells(I, 7)).Interior.Color = RGB(255, 164, 29) 'On colore
Else
  .Range(Cells(I, 1), Cells(I, 8)).Interior.Color = RGB(255, 255, 255) 'sinon Blanc
End If
Next I
End With
End Sub

je ne sais pas comment est arrivée ce "Billets émis après 20h Case Viaxeo" dans la Colonne 6 "F"
ou alors c'est la concaténation des Deux Colonnes Cells(I, 6) & Cells(I, 7) qui donne
"Billets émis après 20h Case Viaxeo" ?????????????????????????????????????????
car tu as mis
VB:
If Cells(i, 6) = "Billets émis après 20h" & "Case Viaxeo"
pas Clair tout ça Lol !
tu me dis !
jean marie
ca fonctionne pas, la fonction ne peut pas être mise en "worksheet activate" car les valeurs de la colonne Analyse ne sont remplis que lors du traitement de la VA.
Le besoin de manière plus explicite est de dire lorsqu'on traite le fichier avec le UserForm et que nous saisissons les valeurs billets émis après 20h ou Case Viaxeo alors les cellules de la ligne saisie en colonne F et G (Analyses support) et (Auteurs) devront être en orange, sinon elles devront rester à l'identique, donc blanche.
Le mieux serait de l'intégrer au bouton valider_click et dans le module5_Police

En espérant avoir été plus claire
 

ChTi160

XLDnaute Barbatruc
Re
voilà ce que j'ai mis dans la procédure " Valider_Click"
VB:
Private Sub Valider_Click()
Dim StrColor$
Dim L As Integer
With Me
   IDRow = CLng(.Lbl_Analyse_S_1.Caption)
With .CmbB_Analyse 'avec ce control
    Ws_Source.Cells(IDRow, 6).Value = .List(.ListIndex, 0) 'on y colle la valeur contenue dans la Première colonne du Control
                 Tbl_Data(IDRow - 1, 6) = .List(.ListIndex, 0) 'on modifie la valeur du Tableau temporaire
End With
With .CmbB_Acteur 'avec ce control
    Ws_Source.Cells(IDRow, 7).Value = .List(.ListIndex, 1) 'on y colle la valeur contenue dans la deuxième colonne du Control
                 Tbl_Data(IDRow - 1, 7) = .List(.ListIndex, 1) 'on modifie la valeur du Tableau temporaire
End With
With .TxtB_Commentaire 'avec ce control
    Ws_Source.Cells(IDRow, 8).Value = .Text 'on y colle la valeur du Control
                 Tbl_Data(IDRow - 1, 8) = .Text 'on modifie la valeur du Tableau temporaire 
End With
End With
With Ws_Source 'avec la feuille
Select Case .Cells(IDRow, 6).Value 'On va tester la valeur de la Cellule de la Colonne 6
      Case Is = "Billets émis après 20h" 'elle est = à
       StrColor = RGB(255, 164, 29) 'on récupére la couleur
      Case Is = "Case Viaxeo" 'elle est = à
       StrColor = RGB(255, 164, 29) 'on récupére la couleur
      Case Else 'Cas ou pas de correspondance avec les deux du Dessus
       StrColor = RGB(255, 255, 255) 'on récupére la couleur
End Select
             .Range(.Cells(IDRow, 6), .Cells(IDRow, 7)).Interior.Color = StrColor 'On colore la plage correspondante avec la Couleur récupérée
End With
set StrColor=Empty
End Sub
tu testes et tu me dis Lol
jean marie
 
Haut Bas