Générer un nom de codification simple en VBA
man.delage
Messages postés
5
Statut
Membre
-
man.delage Messages postés 5 Statut Membre -
man.delage Messages postés 5 Statut Membre -
Bonjour à tous.
Débutant en VBA, je me heurte à un problème surement déjà résolu par nombre d'entre vous....je m'explique:
je voudrais générer une codification à partir d'un choix dans une ListBox par exemple. Jusque la j'arrive à me débrouiller (quoique...ça reste très moyen, je ne post pas l'exemple vous passeriez votre temps a rire :) ).
Le soucis c'est que j'ai plusieurs "code" dans mon nom exemple
Et je voudrais que les list box s'affichent au fur et à mesure que l'on avance dans le choix...
marque2 correspond à 002, modele12 à 012, le type mot à MOT, le lieu de prod Chinon à 004 etc
Si je savais joindre un exemple de fichier dans ce post...
voici ce que je voudrais obtenir :
002-012-MOT-004-006-a17
Merci d'avance pour vos réponses....
Débutant en VBA, je me heurte à un problème surement déjà résolu par nombre d'entre vous....je m'explique:
je voudrais générer une codification à partir d'un choix dans une ListBox par exemple. Jusque la j'arrive à me débrouiller (quoique...ça reste très moyen, je ne post pas l'exemple vous passeriez votre temps a rire :) ).
Le soucis c'est que j'ai plusieurs "code" dans mon nom exemple
Et je voudrais que les list box s'affichent au fur et à mesure que l'on avance dans le choix...
marque2 correspond à 002, modele12 à 012, le type mot à MOT, le lieu de prod Chinon à 004 etc
Si je savais joindre un exemple de fichier dans ce post...
voici ce que je voudrais obtenir :
002-012-MOT-004-006-a17
Merci d'avance pour vos réponses....
A voir également:
- Générer un nom de codification simple en VBA
- 14 simple - Guide
- Generer mot de passe - Télécharger - Sécurité
- Comment générer un qr code - Guide
- Trouver un nom avec une adresse ✓ - Forum Loisirs / Divertissements
- Incompatibilité de type vba ✓ - Forum Programmation
3 réponses
Salut man.delage,
Voilà un exemple de ce qui peut être fait, en limitant l'exemple à 3 ComboBox pour rester lisible :
Le classeur correspondant est là : https://www.cjoint.com/c/JBenQbTZqKZ
En gros :
Dal
Voilà un exemple de ce qui peut être fait, en limitant l'exemple à 3 ComboBox pour rester lisible :
Option Explicit
Dim stCodeMarker As String
Dim C1, C2, C3 As String
Private Sub ReinitAll()
stCodeMarker = "-- code : "
ComboBox1.Clear
With Feuil1.ComboBox1
.AddItem "marque2 -- code : 002"
.AddItem "marque3 -- code : 003"
.AddItem "marque4 -- code : 004"
End With
ComboBox1.Value = ""
C1 = ""
ComboBox1.Visible = True
ComboBox2.Clear
With Feuil1.ComboBox2
.AddItem "modele12 -- code : 012"
.AddItem "modele13 -- code : 013"
.AddItem "modele14 -- code : 014"
End With
ComboBox2.Value = ""
C2 = ""
ComboBox2.Visible = False
ComboBox3.Clear
With Feuil1.ComboBox3
.AddItem "mot -- code : MOT"
.AddItem "cap -- code : CAP"
.AddItem "top -- code : TOP"
End With
ComboBox3.Value = ""
C3 = ""
ComboBox3.Visible = False
Range("C14").Value = "[choisir la marque]"
End Sub
Private Sub Workbook_Open()
ReinitAll
End Sub
Private Function GetCode(ByVal st As String)
Dim posCode As Integer
posCode = InStr(st, stCodeMarker)
GetCode = Mid(st, posCode + Len(stCodeMarker))
End Function
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "" Then
C1 = GetCode(ComboBox1.Value)
ComboBox1.Visible = False
ComboBox2.Visible = True
Range("C14").Value = "[choisir le modèle]"
Else
C1 = ""
End If
End Sub
Private Sub ComboBox2_Change()
If ComboBox2.Value <> "" Then
C2 = GetCode(ComboBox2.Value)
ComboBox2.Visible = False
ComboBox3.Visible = True
Range("C14").Value = "[choisir le mot]"
Else
C2 = ""
End If
End Sub
Private Sub ComboBox3_Change()
If ComboBox3.Value <> "" Then
C3 = GetCode(ComboBox3.Value)
ComboBox3.Visible = False
Range("C14").Value = C1 + "-" + C2 + "-" + C3
Else
C2 = ""
End If
End Sub
Le classeur correspondant est là : https://www.cjoint.com/c/JBenQbTZqKZ
En gros :
- 3 ComboBox sont définies
- elles sont initialisées avec le contenu textuel et le code, seule la 1ère est affichée et la rubrique "Codification" demande à ce que la marque soit choisie
- lorsque la marque est choisie le code est extrait, la 1ère est masquée, la 2ème rendue visible et la rubrique "Codification" demande à ce que le modèle soit choisi
- lorsque le modèle est choisi le code est extrait, la 2ème est masquée, la 3ème rendue visible et la rubrique "Codification" demande à ce que le "mot" soit choisi
- lorsque le "mot" est choisi le code est extrait, la 3ème est masquée (toutes les ComboxBox sont alors masquées) et la rubrique "Codification" comporte la concaténation des codes correspondants aux 3 choix effectués
Dal
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, je ne comprends pas ce que tu souhaites obtenir, pourrais-tu être plus factuel?
plusieurs éléments sont particulièrement peu clairs:
1) à quoi va servir la codification ainsi générée?
2) comment déterminer ce qui correspond à quoi
3) ce que tu essaies d'obtenir semble être une suite, bizarre, non?
joindre un fichier, c'est simple: tu publies le fichier sur internet (cjoint.com, google drive, ...), puis tu partages ici le lien vers le fichier.
plusieurs éléments sont particulièrement peu clairs:
1) à quoi va servir la codification ainsi générée?
2) comment déterminer ce qui correspond à quoi
3) ce que tu essaies d'obtenir semble être une suite, bizarre, non?
joindre un fichier, c'est simple: tu publies le fichier sur internet (cjoint.com, google drive, ...), puis tu partages ici le lien vers le fichier.
Bonjour, et merci pour votre intérêt !
1: c'est une codif interne simplifiée, permettant d'avoir un langage commun,sans fautes d'orthographe, fantaisie dans le noms etc.
2: déterminer. C'est un exemple mais un vlookup (nom cherché, lieu de recherche, 2, false)suffirait si on se base sur un tableau classe/é dans un ordre prédéterminé.
3: oui la suite est bizarre....mais c'est un langage que je pratique depuis 25 ans????
Je ne sais pas comment mettre un exemple dans cette conversation....
1: c'est une codif interne simplifiée, permettant d'avoir un langage commun,sans fautes d'orthographe, fantaisie dans le noms etc.
2: déterminer. C'est un exemple mais un vlookup (nom cherché, lieu de recherche, 2, false)suffirait si on se base sur un tableau classe/é dans un ordre prédéterminé.
3: oui la suite est bizarre....mais c'est un langage que je pratique depuis 25 ans????
Je ne sais pas comment mettre un exemple dans cette conversation....
Option Explicit Dim stCodeMarker As String Dim C1, C2, C3 As String Private Sub ReinitAll() stCodeMarker = "-- code : " ComboBox1.Clear With Feuil1.ComboBox1 .AddItem "marque2 -- code : 002" .AddItem "marque3 -- code : 003" .AddItem "marque4 -- code : 004" End With ComboBox1.Value = "" Range("C6").Value = "" C1 = "" ComboBox1.Visible = True ComboBox2.Clear With Feuil1.ComboBox2 .AddItem "modele12 -- code : 012" .AddItem "modele13 -- code : 013" .AddItem "modele14 -- code : 014" End With ComboBox2.Value = "" Range("C8").Value = "" C2 = "" ComboBox2.Visible = False ComboBox3.Clear With Feuil1.ComboBox3 .AddItem "mot -- code : MOT" .AddItem "cap -- code : CAP" .AddItem "top -- code : TOP" End With ComboBox3.Value = "" Range("C10").Value = "" C3 = "" ComboBox3.Visible = False Range("C14").Value = "[choisir la marque]" End Sub Private Sub Workbook_Open() ReinitAll End Sub Private Function GetCode(ByVal st As String) Dim posCode As Integer posCode = InStr(st, stCodeMarker) GetCode = Mid(st, posCode + Len(stCodeMarker)) End Function Private Sub ComboBox1_Change() If ComboBox1.Value <> "" Then Range("C6").Value = ComboBox1.Value C1 = GetCode(ComboBox1.Value) ComboBox1.Visible = False ComboBox2.Visible = True Range("C14").Value = "[choisir le modèle]" Else C1 = "" End If End Sub Private Sub ComboBox2_Change() If ComboBox2.Value <> "" Then Range("C8").Value = ComboBox2.Value C2 = GetCode(ComboBox2.Value) ComboBox2.Visible = False ComboBox3.Visible = True Range("C14").Value = "[choisir le mot]" Else C2 = "" End If End Sub Private Sub ComboBox3_Change() If ComboBox3.Value <> "" Then Range("C10").Value = ComboBox3.Value C3 = GetCode(ComboBox3.Value) ComboBox3.Visible = False Range("C14").Value = C1 + "-" + C2 + "-" + C3 Else C2 = "" End If End SubEn fin de sélection on a alors :
Les ComboBox de sélection étant masquées, mais pas les résultats intermédiaires sélectionnés.