Problématique de macro/VBA v2

Bonjour à tous,

Je bloque sur le dernier module que je souhaite ajouter à mon fichier; à savoir la saisie d'une nouvelle référence dans la feuille "BASE"

J'ai déjà crée l'userform, tenté d'y associer les fonctions permettant d'ajouter une ligne dans la feuille "BASE", mais rien n'y fait.

J'arrive seulement à y ajouter la date en colonne A (de manière automatisé), mais pas le reste des lignes...

Le clic sur le bouton "Ajouter référence en base" fonctionne bien, fait apparaître l'userform, mais la saisie ne se déverse pas dans la feuille "BASE"...

D'avance, merci.

Je ré-up le fichier.

J'ai réussi à y automatiser la saisie de la date et de l'heure dans la colonne A, mais le reste ne suit pas.

Bonjour AurélienB, le forum,

A tester:

Private Sub cbOK_Click()

    With Sheets("BASE")
            lgn = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Cells(lgn, 1) = Now
        .Cells(lgn, 3) = ListBox1.Value
        .Cells(lgn, 4) = ComboBox1
        .Cells(lgn, 5) = TextBox5
        .Cells(lgn, 6) = ComboBox2
        .Cells(lgn, 7) = TextBox2
        .Cells(lgn, 8) = CDbl(TextBox3)
        .Cells(lgn, 9) = CDbl(TextBox4)

    UserForm1.Hide

    End With
End Sub

Cordialement,

C'est fonctionnel, merci !

Cependant, rien n'est ajouté au niveau de l'opérateur.

Sur la feuille "BASE", en colonne C, l'opérateur n'est pas déversé.

Ca correspond à :

        .Cells(lgn, 3) = ListBox1.Value

Autre demandes, est-il possible d'incrémenter automatiquement le code en colonne B de la feuille "BASE" par rapport au précédent ?

Et éventuellement de reprendra la mise en formes (contours, formats de cellules etc...) de la ligne précédente ?

D'avance, merci.

La question de l'opérateur est résolu, j'ai simplement remplacé la ListeBox par une ComboBox et le tour est joué.

Les deux autres questions sur la mise en forme et sur la génération d'un nouveau code (incrémenté) est toujours d'actualité.

11projet-stock-v4-2.zip (112.07 Ko)

J'ai tenté ca pour l'incrémentation auto :

        .Cells(lgn, 2) = ActiveCell.FormulaR1C1 = "=INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1"

Mais ca me produit un "FAUX" ...

Re,

J'ai rajouté une textbox pour le code....(Textbox6)

Private Sub cbOK_Click()

    With Sheets("BASE")
            lgn = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Cells(lgn, 1) = Now
        .Cells(lgn, 2) = CDbl(TextBox6)
        .Cells(lgn, 3) = ComboBox3
        .Cells(lgn, 4) = ComboBox1
        .Cells(lgn, 5) = TextBox5
        .Cells(lgn, 6) = ComboBox2
        .Cells(lgn, 7) = TextBox2
        .Cells(lgn, 8) = CDbl(TextBox3)
        .Cells(lgn, 9) = CDbl(TextBox4)

    Unload UserForm1

    End With
End Sub
Private Sub UserForm_Initialize()

TextBox6 = Sheets("Base").Range("B" & Rows.Count).End(xlUp) + 1

End Sub

Cordialement,

C'est parfait, c'est ce que je souhaitais !

Milles merci

Re-Bonjour,

Et sur la partie ou tu insérait automatiquement la valeur du code précédent +1 :

Private Sub UserForm_Initialize()

TextBox6 = Sheets("Base").Range("B" & Rows.Count).End(xlUp) + 1

End Sub

Une variante qui indiquerait de prendre la valeur la plus haute dans la colonne B +1 ?

En effet, lorsque je classe par ordre alphabétique la colonne D, le dernier code de la dernière ligne +1 me donne forcément une valeur déjà existante.

D'avance, merci.

bonjour

pour éviter les doublons surtout après un delette ligne

Private Sub UserForm_Initialize()
'TextBox6 = Sheets("Base").Range("B" & Rows.Count).End(xlUp) + 1
    TextBox6.Locked = True
    TextBox6.Value = Application.Max(Feuil2.Columns(2)) + 1
End Sub

A+

Maurice

Bonjour,

Merci !

En l'état, cela me met la valeur "1" par défaut dans la ligne alors que le 178 est attendu.

L'explication vient du fait que j'utilise un format de cellule "personnalisé" avec : 00000000001 au lieu d'une cellule formaté en "Nombre" sans virgules.

Rechercher des sujets similaires à "problematique macro vba"