Formulaire de saisie

20appli.xlsm (176.28 Ko)

Bonjour à tous,

Je fais appel à votre sagesse pour résoudre un problème au niveau d'une formulaire de saisie

Exposé de la situation:

J'ai un fichier Excel ("appli") que je souhaite creer une formulaire de saisie . par contre j'ai un message d'erreur et j'ai pas pu le résoudre

mot de passe: 1993

voila le code

Private Sub btnAjout_Click()
Sheets("sources").Activate
Range("A1").Select
Selection.End(xlDown).Select
Selection .Offset(1, 0).Select
ActiveCell = codebarre.Value
ActiveCell.Offset(0, 1).Value = txtbl
ActiveCell.Offset(0, 1).Value = Txtcommande
ActiveCell.Offset(0, 1).Value = Txtfournisseur
ActiveCell.Offset(0, 1).Value = statut
ActiveCell.Offset(0, 1).Value = service
ActiveCell.Offset(0, 1).Value = Date
ActiveCell.Offset(0, 1).Value = txtcomm

End Sub

veuillez trouvez ci-joint le fichier mot de passe: 1933

merci pour vos proposition.

Hello,

Le problème vient de ta première ligne de code ...

Sheets("sources").Activate

Si je ne m'abuse ta feuille se nomme "sources " non ?

Bonjour vbahich, Rag02700

Ahhhhhh... ces espaces après le nom des feuilles
Comma l'a dit si bine Rag02700, dans le classeur le nom de la feuille est "sources " et non "sources" d'où l'erreur

Ceci dit, le codage comme il est fait n'est vraiment pas terrible, vous utiliser un tableau structuré, profitez-en

Private Sub btnAjout_Click()
  Dim LObj As ListObject, Lig As Long
  Set LObj = ThisWorkbook.Sheets("sources ").ListObjects("Tableau3")
  With LObj
    Lig = LigVierge(LObj)
    With .DataBodyRange
      .Cells(Lig, 1).Value = Me.codebarre.Value
      .Cells(Lig, 2).Value = Me.txtbl
      .Cells(Lig, 3).Value = Me.Txtcommande
      .Cells(Lig, 4).Value = Me.Txtfournisseur
      .Cells(Lig, 5).Value = Me.statut
      .Cells(Lig, 6).Value = Me.service
      .Cells(Lig, 7).Value = CDate(Date)
      .Cells(Lig, 8).Value = Me.Txtcomment
    End With
  End With
  Set LObj = Nothing
End Sub

La petite fonction (à mettre dans un module) que j'utilise pour la ligne vierge dans le TS

' Petite fonction pour touver la 1ère ligne vierge dans un tableau structuré
Function LigVierge(LstObj As ListObject)
  Dim CelF As Range
  ' Trouver la prochaine ligne vide du tableau
  Set CelF = LstObj.ListColumns(1).Range.Find("")
  ' Si aucune on ajoute une nouvelle ligne
  If CelF Is Nothing Or LstObj.ListRows.Count = 0 Then
    LstObj.ListRows.Add: LigVierge = LstObj.ListRows.Count
  Else
    LigVierge = CelF.Row
  End If
End Function

J'espère que cela vous donnera une idée, de comment développer

A+

Bonsoir à tous,

@BrunoM45,

Petite question pour ma culture personnelle .

Ne faut-il pas un

Set CelF = Nothing

à la fin de la function LigVierge ? Si non, pourquoi ?

Bonne soirée,

Cordialement.

Bonjour Zebulon2

Petite question pour ma culture personnelle .

Ne faut-il pas un

Set CelF = Nothing

à la fin de la function LigVierge ? Si non, pourquoi ?

On peut, mais cette variable objet est déclarée en locale dans la fonction, elle se vide automatiquement à sa sortie

A+

Bonjour,

Merci pour la réponse, je la note dans mes tablettes.

Bonne journée,
Cordialement.

je vous remercie pour vos réponses par contre j'ai toujours un message d'erreur.

mot de passe: 1993

14colis123.xlsm (78.86 Ko)
image
Suppression

Bonjour vbahich

Si vous protégez votre feuille, comment voulez-vous que les valeurs ou les lignes soient ajoutées !?

Il faut :

1) déprotéger la feuille
2) faire les actions souhaitées
3) Protéger la feuille

Ou alors utiliser pour la protection "UserInterfaceOnly"

A+

parfait, merci beaucoup.

bonne journee.

Re,

Rechercher des sujets similaires à "formulaire saisie"