[Excel 2010] Userform et tableau Excel
Bonjour à tous
Je vous explique mon problème,
j'ai créer un simple userform pour faire mes essai avec un tableau excel
l'idée c'est que quand je rentre mon code dans la premier zone de texte dans l'user form celui si s'ajoute bien dans la colonne A et passe ensuite à la ligne.
Mais comment lui dire que si le numéro est identique à une des ligne de la colonne A, qu'il ne l'ajoute pas à la ligne en bas mais qu'il complète la ligne du numéro du mur et module suivant la deuxième entré de l'user form
dans la deuxième saisi userform sera rentré des noms de machine (les même nom que dans les colonnes d'excel)
l'idée si le nom weinman est écrit, il m'ajoute la date de quand a été pointé ce murs du module numéro ... dans la colonne weinmann
Voila mon début de code
Private Sub CmbAjouter_Click()
Dim Derligne As Integer
With Sheets("Feuil2")
Derligne = .Range("A65536").End(xlUp).Row + 1
.Range("A" & Derligne) = Me.ComboBox1
.Range("D" & Derligne) = Me.ComboBox2
End With
MsgBox "Ajout effectué"
Unload Me
Exit Sub
End Sub
je ne sais vraiment pas si je suis assez claire.
je vous envoie donc le fichier en pièce jointe pour voir si qqn aurais une solution (surtout pour comprendre peut être mieux :p)
Pour ouvrir l'user form cliquez sur % du clavier (l'idée ces l'utilisation d'une douchette avec un system de code bar, donc le clic de la douchette ouvrira le formulaire)
Cordialement
Bonjour,
j'ai utilisé la fonction EQUIV (Match) pour vérifier si le numéro est identique à une des lignes de la colonne A,
mais je n'ai pas compris la ligne avec codebar Is WBZ
Private Sub CmbAjouter_Click()
Dim Derligne As Long
Dim rw As Long
Dim codebar As ComboBox2
Set sh = Sheets("Feuil2")
Derligne = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
If IsError(Application.Match(Me.ComboBox1, sh.Range("A:A"), 0)) Then
rw = Derligne 'Mur non inscrit
Else
rw = Application.Match(Me.ComboBox1, sh.Range("A:A"), 0) 'Mur inscrit à la ligne rw
End If
sh.Range("A" & rw) = Me.ComboBox1
'If codebar Is WBZ Then sh.Range("D" & rw) = Me.ComboBox2
MsgBox "Ajout effectué à la ligne " & rw
Unload Me
Exit Sub
End Sub
Bonjour sabV et merci pour ta réponse rapide
pour le wbz c'est un essai bidon que j’essaie de faire.
ton code marche à merveille par contre si j'ajoute un code identique en Colonne A il me dit bien que je l'ai déjà en ligne 2 par exemple mais si dans mon formulaire je lui indique (dans la deuxième case (combobox2) que si il y a d’écrit WBZ il m’actualise le mur avec la date actuel écrit dans WBZ c'est vraiment la ou j'ai mon problème et il va y avoir autant de foi l’opération pour remplir toute les colonnes au fur et a mesures des heures ou jour
C'est peu être pas simple a comprendre je m'en excuse ..
si dans mon formulaire je lui indique (dans la deuxième case (combobox2) que si il y a d’écrit WBZ il m’actualise le mur avec la date actuel écrit dans WBZ
C'est peu être pas simple a comprendre...
non, je ne comprend pas du tout, il n'y a pas de date dans le fichier transmit ?
Bonjour,
Et merci pour l'aide que tu m'apportes
Je vais essayer d'être claire
J'ai une chaîne de fabrication ou mon mur va passer sur plusieurs postes précis :
WBZ
WEINMMAN
(de la colonne D à la colonne L)
Ensuite dans mon formulaire, j'ai 2 zones de saisie
La première, c'est le numéro du code bar qui va par la suite s'afficher dans la colonne A
Et l'autre zone, c'est aussi un code bar qui va me donner le texte suivant la zone ou il se trouve.
En gros si on écrit dans la première zone de formulaire : M201 4.0.0.41
Et dans la deuxième : Weinmann
J'aimerais que quand on l'ajoute, il vérifie déjà si : M201 4.0.0.41 existe déjà dans le tableau,
S'il existe donc il va regarder la deuxième zone de saisie, ou a été saisi Weinmann (par exemple) et il m'ajoute dans la colonne weinmann de la ligne M201 4.0.0.41 la date ou a été validé le formulaire.
S'il n'existe pas, il créé la ligne et ajoute ensuite la date
Ensuite, le mur sera scanné plus loin, il sera donc déjà créé dans la base, mais passera sur la chaîne WEK et devra donc après validation entrée la date dans la colonne WEK
C'est tout le système là que j'ai du mal à mettre en place
Merci encore de ton aide
Ben je n'attendais pas autant c'est parfais !
Par contre j'aurais aimer garder le formulaire comme avant ( avec les 2 saisi de texte car les 2 infos seront ajouté par code bar avec la douchette. Donc le codebar donnera le nom WBZ etc
EDIT: je n'ai pas vu mais je peu entrer un texte dans la liste déroulante donc je pense que cela devrais fonctionner
j'aimerais que au lancement de mon formulaire il me sélectionne automatiquement le combobox2
j’essaie ce code qui ne veu pas fonctionner
Me.ComboBox2.SetFocus
j'ai du mal a comprendre pourquoi il reste sélectionner sur le bouton
En tout cas gros merci
j'ai essayer la journée complète à coder un truc qui fonctionnerais à peu prêt mais je n'ai absolument pas réussi
va falloir que je bosse les tuto du site !
Merci beaucoup !
Bonjour,
j’essaie ce code qui ne veu pas fonctionner
avez-vous mit votre code dans la macro UserForm_Initialize ?
Bonjour,
Fonctionne bien une fois que je l'ai mis dans initialize par contre si je le lance depuis le vba direct avec PLAY c'est ok mais si c'est depuis le tableau ou le raccourci, ça ne marche pas
Petite question en même temps, j'ai créé un code pour séparer sur mon tableau le code bar en 2 colonnes avec Gauche et Droite
Vous pensez que c'est réalisable de l'intégrer direct en vba ? Ça éviterait des formules dans le tableau
Je sais pas vraiment si cela est vraiment possible
En tout cas énorme merci ! J'ai compris le fonctionnement du code je pense.
Bonjour,
Petite question en même temps, j'ai créé un code pour séparer sur mon tableau le code bar en 2 colonnes avec Gauche et Droite. Vous pensez que c'est réalisable de l'intégrer direct en vba ? Ça éviterait des formules dans le tableau
voilà,
Private Sub CmbAjouter_Click()
Dim codebar As ComboBox2
Dim sh, esp As Integer, cl As Integer, rw As Long, Derligne As Long
Set sh = Sheets("Feuil2")
Derligne = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
If Me.ComboBox2 = Empty Or Me.ComboBox3 = Empty Then
MsgBox "Vous devez renseigner le Code et la Chaine, recommecez.", vbCritical
Exit Sub
End If
cl = Application.Match(Me.ComboBox3, sh.Range("1:1"), 0)
If IsError(Application.Match(Me.ComboBox2, sh.Range("A:A"), 0)) Then
rw = Derligne 'Mur non inscrit
Else
rw = Application.Match(Me.ComboBox2, sh.Range("A:A"), 0) 'Mur inscrit à la ligne rw
End If
sh.Cells(rw, 1) = Me.ComboBox2
sh.Cells(rw, cl) = Date
If Not IsError(Application.Search(" ", sh.Cells(rw, 1))) Then 'remplacement de formule colonne B et C
esp = Application.Search(" ", sh.Cells(rw, 1))
sh.Cells(rw, 2) = Left(sh.Cells(rw, 1), esp)
sh.Cells(rw, 3) = Right(sh.Cells(rw, 1), Len(Cells(rw, 1)) - esp)
End If
MsgBox "Ajout effectué à la ligne " & rw
Unload Me
End Sub
Vous êtes vraiment doué !
Merci beaucoup pour votre aide ! Super service !!
Je vais essayer de comprendre tout ce code qui me parait comme ça ç premiere vue très complexe :p