Attribuer une reference automatiquement

biloute91

XLDnaute Occasionnel
Bonjour,

J'ai un USF qui me permet d'alimenter un tableau. Je souhaiterais qu'à chaque utilisation une reference automatique soit attribuée dans une TextBox mais avec un format spécifique.

Format souhaité : DISaa/mm/xxxx

DIS : debut de la référence
aa : année
mm : mois
xxxx : n° croissant

Merci pour aide
 

biloute91

XLDnaute Occasionnel
Re : Attribuer une reference automatiquement

Merci Hasco pour la formule mais j'avoue que je ne suis pas encore très à l'aise avec le VBA.
Voici le code que j'ai recupere sur ce forum en l'adaptant légèrement

Private Sub CommandButton1_Click() 'Valider
Dim DerLigne As Integer, i As Byte


DerLigne = Range("Feuil2!A20000").End(xlUp).Row
Sheets("Feuil2").Cells(DerLigne + 1, 1) = DerLigne

TextBox6.Value = DerLigne
End Sub


J'ai definit dans la Feuille 3 une cellule Compteur mais je n'arrive pas à integrer la reference à cette cellule.

Merci pour ton aide
 

biloute91

XLDnaute Occasionnel
Re : Attribuer une reference automatiquement

Désolé mais j'ai un message "Incompatibilité Objet 13"

Ci-joint l'ensemble de mon code

Code:
Option Explicit
Private WS1 As Worksheet
Private WS2 As Worksheet
Const G As String = "MISE A JOUR"
Private Sub ComboBox1_Change()
Dim lig As Integer
If ComboBox1.ListIndex < 0 Then Exit Sub
lig = ComboBox1.ListIndex + 2
TextBox1.Value = WS1.Cells(lig, 2).Value

End Sub

Private Sub Label2_Click()

End Sub

Private Sub UserForm_Initialize()
Dim Lf_données As Long
Dim DerLg, i
Set WS1 = ThisWorkbook.Worksheets("Feuil3")
Set WS2 = ThisWorkbook.Worksheets("Feuil2")
Lf_données = WS1.Range("A65536").End(xlUp).Row

DerLg = WS1.Range("A2200").End(xlToLeft).Row
With WS1

    For i = 2 To DerLg
        ComboBox1.AddItem .Cells(i, 1)
            
            Next i
End With
ComboBox1.Value = ""
Me.Caption = G
ComboBox4.Visible = False
Label5.Visible = False

End Sub
Private Sub valider_Click()
Application.ScreenUpdating = False
'Déclaration de variable 'L' pour connaitre le numéro de la Ligne
Dim L As Integer
'ici je repère la dernière ligne vide pour coller les données
L = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1
'Ici c'est le report de la saisie dans la feuille
L = ComboBox1.ListIndex + 2
With Sheets("Feuil2")
.Cells(L, 1).Value = Me.TextBox6.Value
.Cells(L, 2).Value = Me.TextBox1.Value
.Cells(L, 3).Value = Me.ComboBox2.Value
.Cells(L, 4).Value = Me.ComboBox3.Value
.Cells(L, 5).Value = Me.ComboBox4.Value
.Cells(L, 6).Value = Me.ComboBox5.Value
.Cells(L, 7).Value = Me.TextBox2.Value
.Cells(L, 8).Value = Me.TextBox3.Value
.Cells(L, 9).Value = Me.ComboBox6.Value
.Cells(L, 15).Value = Me.ComboBox7.Value
.Cells(L, 16).Value = Me.TextBox4.Value
.Cells(L, 17).Value = Me.ComboBox8.Value
.Cells(L, 18).Value = Me.TextBox5.Value
.Cells(L, 10).Value = DTPicker1.Value
.Cells(L, 13).Value = DTPicker3.Value
End With



Application.ScreenUpdating = True
End Sub
Private Sub ComboBox3_Change()
If ComboBox3.Value = "SOR" Then MsgBox " Merci d'indiquer le nom de la campagne concernée "
If ComboBox3.Value = "SOR" Then ComboBox4.Visible = True
If ComboBox3.Value = "SOR" Then Label5.Visible = True
If ComboBox3.Value <> "SOR" Then Label5.Visible = False
If ComboBox3.Value <> "SOR" Then ComboBox4.Visible = False
End Sub
Private Sub CommandButton1_Click() 'Valider
Dim DerLigne As Integer, i As Byte


DerLigne = Range("Feuil2!A20000").End(xlUp).Row
Sheets("Feuil2").Cells(DerLigne + 1, 1) = DerLigne

TextBox6.Value = DerLigne

End Sub
 
G

Guest

Guest
Re : Attribuer une reference automatiquement

Re

Où en est-on? tout à l'heure il s'agissait de Compteur, où appraît-il dans ce que tu nous donnes.

De plus sur quelle ligne as-tu le message "Incompatibilité Objet 13"?

Peux-tu joindre le fichier?

A tout à l'heure peut-être.
 

biloute91

XLDnaute Occasionnel
Re : Attribuer une reference automatiquement

Désolé d'avoir été si confus mais je ne pouvais pas joindre mon fichier qui avait des donnéées confidentielles j'ai donc du le retravailler pour le joindre.

Le compteur est en feuille 3 et le message apparait au niveau de Private Sub valider_Click()

En esperant que cela soit plus claire

A bientot
 

Pièces jointes

  • disqua2.zip
    32.7 KB · Affichages: 26
G

Guest

Guest
Re : Attribuer une reference automatiquement

Hello biloute,

J'ai testé ton userform et le seul message que j'obtiens en cliquant sur Valider est 'Variable non définie' sur ces Lignes:

Code:
.Cells(L, 10).Value = DTPicker1.Value
.Cells(L, 13).Value = DTPicker3.Value

Effectivement tu n'as aucun datePicker sur ton formulaire.

Pour ce qui est de la référence, il vaut mieux procéder autrement.

Voici le fichier Modifié: Voir la fonction CalculRéférence() dans le module du userform.

Note: Les données en feuil2 devront être triée sen ordre croissant sur la colonne A avant le calcul de la référence.

J'ai ôté toutes les lignes De feuil2 à partir de la ligne 2000 jusqu'au bas.

Bonne programation
 

biloute91

XLDnaute Occasionnel
Re : Attribuer une reference automatiquement

Re-,

En ce qui concerne le DTpicker j'utilise Excel 2002 au travail et cela fonctionne, alors que le fichier joint l'a été fait depuis mon domicile où j'utilise 2007.

Merci pour le fichier et la formule. Quand tu m'expliques qu'il est necessaire de trier la colonne A, ceci explique le fait que la reference vient toujours alimenter la cellule A1 ?
N'est-il pas possible d'incrementer le resultat dans la derniere cellule vide ?

Merci et bonne soirée
 
G

Guest

Guest
Re : Attribuer une reference automatiquement

RE+++,;)

Non ceci ne veut pas dire cela.

Dans ta procédure de validation tu avais (voir les lignes en rouges):

Code:
Private Sub valider_Click()
    Application.ScreenUpdating = False
    'Déclaration de variable 'L' pour connaitre le numéro de la Ligne
    Dim L As Integer
    'ici je repère la dernière ligne vide pour coller les données
    [COLOR="Red"]L = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1[/COLOR]
    'Ici c'est le report de la saisie dans la feuille
   [COLOR="red"]L = ComboBox1.ListIndex + 2[/COLOR]

Tu définis deux fois de façon différente L.
Où L est le numéro de ligne dans la feuille où seront enregistrer les nouvelle données.

La première est la bonne pour que les données soit conservée une ligne après l'autre.

donc tu dois avoir ceci

Code:
Private Sub valider_Click()
    Application.ScreenUpdating = False
    'Déclaration de variable 'L' pour connaitre le numéro de la Ligne
    Dim L As Integer
    'ici je repère la dernière ligne vide pour coller les données
    L = Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1


Pour ce qui est du tri, si tu as analysé la fonction tu auras remarqué qu'elle
récupère la dernière valeur enregistrée et lui ajoute une unité. Aussi faut - il pour que le compte soit juste que la dernière ligne de la feuille contienne la dernière référence enregistrée.

voilà....

Peut-être à ce soir ou demain
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 010
Membres
104 004
dernier inscrit
mista