Conditions pour remplir listbbox et tb

Vous devez aussi mettre le mot MDP pour déprotéger sans quoi votre feuille reste protégée

ActiveSheet.Unprotect Password:=MDP

Cordialement

Oui mais dans ce cas là je n'ai plus à entrer le mot de passe, beaucoup moins utile du coup

Comment entrez vous le mot de passe ? via une inputbox je suppose ?

C'est exact

Il faudrait que je vois le code que vous utilisez

Sinon, une idée sur ce fil dans lequel j'avais donné une solution --> https://forum.excel-pratique.com/s/goto/972571

Je crois bien que c'est résolu, encore une fois merci beaucoup !

Bonjour Dan,

Si tu t'en souviens encore un peu, j'avais un numéro de bon unique un peu spécial.

J'ai du faire une petite connerie quelque part car quand je l'indique , que je remplis l'initial et la date, il m'indique une erreur ici

For Each cel In .DataBodyRange

Depuis la dernière fois, j'ai ajouté cela et cela fonctionnait très bien.

Const BU = 10

Et comme tu peux le voir, j'ai également modifié tous les noms des textbox, ce que j'aurais du faire depuis le début.. Tout a été remplacé automatiquement avec une fonction de Word, donc logiquement pas d'oubli de modification dans le nom des textbox et cbb.

Voilà le code :

Private Sub TBdate_Afterupdate()
Dim cel As Range

If Right(TBbon.Value, 2) = BU Then

    With Sheets("SORTIE").ListObjects("TABsortie").ListColumns(2)
        For Each cel In .DataBodyRange
            If cel.Offset(0, 1) = TBbon.Value And cel.Value = CDate(TBdate.Value) And cel.Offset(0, 3) = TBini.Value Then
                TBrem.Value = .DataBodyRange.Item(cel.Row - 16, 12)
                Call RemplirListbox
                Exit Sub
            End If
        Next cel
    End With
End If
End Sub

________________________________________________________________________

Private Sub TBbon_Change()

Dim strNumBS As String
Dim i As Long, lngLastRowMouvs As Long, y As Long, j As Long
Dim wksMouvs As Worksheet

strNumBS = TBbon.Value
Set wksMouvs = Sheets("SORTIE")
If strNumBS <> "" Then
    y = 0
    With wksMouvs
        LBsortie.Clear
        lngLastRowMouvs = .Range("D" & Rows.Count).End(xlUp).Row
        For i = 17 To lngLastRowMouvs
            If .Cells(i, "D") = strNumBS And TBini.Value = .Cells(i, "F").Value Then
                For j = 1 To 10
                    LBsortie.AddItem
                    LBsortie.List(y, j - 1) = .Cells(i, j + 1)
                Next j
                y = y + 1
            End If
        Next i
    End With
End If

Dim cel As Range

  Me.TBdate = ""
  Me.TBbat = ""
  Me.TBrem = ""

  If Me.TBbon <> "" Then
    Set cel = Sheets("SORTIE").Columns("D").Find(what:=Me.TBbon, LookIn:=xlValues, lookat:=xlWhole)
    If Not cel Is Nothing Then
      If Right(TBbon.Value, 2) <> BU Then Me.TBdate = cel.Offset(0, -1): Me.TBrem = cel.Offset(0, 10)
      Me.TBbat = cel.Offset(0, 1)
    Else
    End If
  End If

Set wksMouvs = Nothing
End Sub

Je ne comprends pas et ça m'agace

Merci

Bonjour,

Et comme tu peux le voir, j'ai également modifié tous les noms des textbox,

C'est pas toujours une bonne idée de le faire.

Pour le souci, en premier il faudrait vérifier que la tableau TABSortie est toujours bien défini et que les dates sont bien en colonne 2

Et comme tu peux le voir, j'ai également modifié tous les noms des textbox

Je pensais que oui

Non tout à l'air bien , tous les autres numéros fonctionnent sans problème excepté le n° du bon unique.

L'erreur que vous mentionnez sur l'instruction For Cel in .databodyrange, concerne des dates (colonne 2) et pas un numéro de bon

J'ai compris, ce n'est pas bien grave mais si tu as éventuellement une solution simple.

Il y a une erreur sur la date quand il n'y encore aucune sortie de faite.

S'il existe déjà une sortie sur un autre bon, alors je peux indiquer ma date type 11/10/21 et là ça fonctionne.

Merci

J'ai compris, ce n'est pas bien grave mais si tu as éventuellement une solution simple.
Il y a une erreur sur la date quand il n'y encore aucune sortie de faite.

Tu veux dire qu'il n'y a pas de date mentionnée ?

Je suppose que le code reprends le format de date qui existe déjà, mais s'il y en a pas, ça fait une erreur.

Donc, il doit d'abord exister une sortie sur un autre n° de bon.

Mon tableau a déjà une sortie, donc je peux faire une nouvelle sortie sur le bon unique.

1

Et dans ce cas-ci, j'ai une erreur avec mon bon unique quand je veux valider la date .

2

Lorsque vous avez le bug, le code plante à quelle ligne de code ?

Sinon vous pouvez essayer en mettant cette ligne juste en dessous de For Each Cel in.....

On Error Resume Next

Mais pour être sûr de contourner correctement l'erreur, le mieux serait d'abord de savoir où le code s'arrête. La ligne à souci devrait être soulignée en jaune

L'erreur se produit sur cette ligne

For Each cel In .DataBodyRange

Et ça fait tout planter puisque Excel se ferme.

For Each cel In .DataBodyRange

Et ça fait tout planter puisque Excel se ferme.

Oulà...... le souci doit venir d'autre chose. Peut être revoir votre fichier ?

Voici

3copie-de-stock.zip (449.75 Ko)

Merci du fichier mais là dans votre feuille Sortie vous n'avez aucune donnée.

Le plantage excel vient lorsque vous avec des données ou pas ?
Expliquez moi ce que vous faites que je reproduise cela.

Pour avoir l'erreur, le tableau doit être vide.

Ensuite, j'ouvre le formulaire avec l'icone +

1

Et quand je veux aller à la tb bâtiment, ça me met l'erreur.

Joli fichier !!!

Pour votre erreur, faites ceci :

Juste avant le If Right(TBbon.Value, 2) = BU Then, mettez cette ligne

If Sheets("SORTIE").ListObjects("TABsortie").ListRows.Count = 0 Then Exit Sub

On peut aussi ajouter un message avant le EXIT SUB pour spécifier qu'il n'y a pas de données enregistrées en feuille Sortie

Cordialement

Rechercher des sujets similaires à "conditions remplir listbbox"