[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

34saisi-prod-1.xlsm (21.09 Ko)

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

Bonjour,

Dites-moi si cet exemple vous convient,

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

Rechercher des sujets similaires à "2010 userform tableau"