Definir conditions affichage userform
Bonjour à tous je suis nouveau ici je me présente Mikael 31 ans et de niveau moyen en informatique .On me demande à mon taf de bosser sur un tableau de bord de suivi de production. Bien sur seul...et je galère car je n'ai jamais touché au VBA (je cherche des cours à domicile)! Les données sont confidentielles car je travail pour un équipementier aéronautique.
Le but : afficher à quelle étape est chaque produit d'une ligne de production. Je voudrais en double cliquant sur une une plage bien précise que mon userform me permettant de déplacer mes cases (déjà crée) s'affiche uniquement si les trois cases précédentes de la ligne en question ont été remplies. Et lorsque je double clic sur la dernière étape (colonne) on puisse supprimer la ligne complétée (et en créer une nouvelle vide en fin de tableau) après avoir saisi un mot de passe.
La saisie des trois premières cases de chaque ligne devrait aussi pouvoir se faire avec ce même mot de passe.
J'ai également besoin de pouvoir trier mon tableau suivant de type de produit (P/N) 1ere colonne et la date d'échéance 3eme colonne...
De plus je cherche a substituer les numéros de référence rentrés en 1ere colonne par un nom raccourci propre a chaque référence (renseigné en feuille 3 chaque ref a son équivalent écrit a sa droite)
Egalement raccourcir le numéro de série au 4 derniers chiffres de droite pour la colonne en question.
Voila. J'ai déjà crée une fonction substitute sur un ancien tableau mais cela fonctionnait mal car en formule dans la 1ere cellule de la colonne puis tirée ainsi que =droite(4) je pense qu'il y a moyen de créer tout cela en déclaration mais je n'y arrive pas.
Je sais que je formule beaucoup de demandes en même temps, ainsi si il le faut je peux séparer chaque sujet. Je peux aussi essayer d'envoyer un tableau d'exemple avec les données modifiées (numéros de séries).
voici le code qui ne fonctionne pas:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)
If Application.Intersect(Target, Range("$E$5:$T$22")) Then Action.Show
If Application.Intersect(Target, Range("B:B")) Then
ActiveCell.Select
ActiveCell.FormulaR1C1 = ""
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Offset(16, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
cancel = True
End If
End Sub]Bonjour,
Je ne vois pas bien ce que tu fais, mais essaie plutôt ainsi :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("$E$5:$T$22")) Is Nothing Then
Action.Show
Cancel = True
ElseIf Not Intersect(Target, Range("B:B")) Is Nothing Then
With Target
.Offset(16).EntireRow.Insert
.EntireRow.Delete
End With
Cancel = True
End If
End SubSi tu bâtis un fichier modèle, il convient de respecter la structure de ton classeur, l'organisation des données, les types de données (nombres, textes, dates, etc.)utilisés, et le cas échéant les particularités qui peuvent affecter certaines données (limitation des types ou du nombre de caractères, etc.), afin d'éviter des surprises aux résultats...
Cordialement.
Déjà un grand merci pour ta réponse ! Tout fonctionne bien, c'est merveilleux, il me reste à analyser mes erreurs pour ne pas les reproduire.
Je vais essayer d'ajouter mes champs sécurisés par mot de passe tout seul comme un grand.
Faut il créer un système de boucle pour que le userform "action" ne s'affiche que si les colonnes B, C et D sont renseignés pour la ligne cliquée? Voici le projet en changeant juste les noms pour ne pas avoir de soucis. Tu comprendras mieux le concept ainsi je pense.
La case P/N sera renseignée par douchette, c'est la que je dois faire mon =substitute (feuille 3, la colonne A à sont équivalent en B a sa droite)
La case S/N par douchette aussi doit être réduite en =droite(4)
La case delais sera renseignée à la main ces trois cases devraient être protégées par mot de passe.
Ensuite les case en oblique sont les étapes de production, donc la macro coloriant les cases en vert et en rouge ne doit fonctionner que sur celles ci. La dernière stock doit avoir la particularité de supprimer la ligne après avoir rentré le mot de passe (le même que les 3 premières).
La case commentaires devrait se remplir automatiquement avec ce qui est selectionné ou écrit dans la liste déroulante du userform...