Erreur Add de ListRows

à quoi correspond lignes de code "tb_clients_facturé"

"tb_clients_facturé" est l'objet VBA correspondant au tableau structuré "TableauClientsFacturé" situé dans la feuille "Clients_Facturé".

Cet objet VBA est assigné par l'instruction :

  Set tb_clients_facturé = [TableauClientsFacturé].ListObject

située dans la procédure événementielle : Private Sub UserForm_Initialize()

et nom Userform "nom_formulaire"

"nom_formulaire" comme son nom l'indique, est une variable représentant le nom du formulaire et chargée par l'instruction:

  nom_formulaire = Me.Name

(Name est la propriété du formulaire contenant son nom)

Thev,

J'ai retransmis les mêmes lignes de code que toi, sur le formulaire Clients Intervention problème d'ouverture du formulaire.

Ci-joint le fichier.

Riko

J'ai retransmis les mêmes lignes de code que toi, sur le formulaire Clients Intervention problème d'ouverture du formulaire.

Il manquait :

1- la définition de la variable de module :

Dim tb_clients_intervention As ListObject 

2- le chargement de cette variable :

Set tb_clients_intervention = [TableauClientsIntervention].ListObject

correspondant au tableau structuré de la feuille "Clients_Intervention"

3- l'instruction d'ajout d'une ligne au tableau structuré :

Set ligne = .ListRows.Add: j = ligne.Index

4- la bonne syntaxe de l'instruction :

DataBodyRange.Rows(j)

De plus, les propriétés RowSource des combobox n'avaient pas été supprimées.

Re thev ,

Merci ça fonctionne correctement j'ai juste modifié le nom "Clients Facturé"

2020 06 08 21 27 02 microsoft visual basic pour applications copie de copie de bon intervention 20

par "Client Intervention" pour le partager à la communauté.

Si toutefois tu vois d'autres améliorations à apporter à mon projet, je suis preneur, Xorsankukai c'est vraiment impliqué dans mon projet, je lui en suis très reconnaissant, je reprendrai juste son dicton de fin message "La connaissance, c’est partager le savoir qui nous fait grandir".

Remerciement à tous les acteurs.

Bonne soirée à tous. .

Riko

Bonsoir Thev et à l'équipe,

Pensant en avoir fini avec mon programme, j'ai encore une erreur

2020 06 08 22 25 26 saisie bon intervention

dans le formulaire "saisie bon intervention" à la saisie page "Bon Intervention 4" ligne matériel à facturer

2020 06 08 22 31 25 saisie bon intervention

lorsque je veux faire un enristrement en appuyant sur "Ajouter".

Ligne de code en erreur :

2020 06 08 22 23 47 microsoft visual basic pour applications bon intervention 2020 v08 062020 xl

Ci-joint programme màj.

Dans l'attente d'une réponse.

Bonne soirée à tous.

Riko

Bonsoir,

ci-jointe version corrigée

Votre tableau structuré "Stock Véhicules" ne doit pas comporter de lignes vides. J'ai donc supprimé ces lignes.

Bonjour à tous,

@thev:

Merci pour ta réponse (https://forum.excel-pratique.com/viewtopic.php?p=877898#p877898) , j'en prends bonne note et tâcherai de la mettre à profit.

Pour le formulaire

FormSaisieRecherches

, rien à redire sur mon "bricolage" de la Textbox ?

TextBoxRecherche

?

Je suis certain qu'il y a moyen d'optimiser, non ?

Amicalement,

[spoiler=Spoiler]

Private Sub TextBoxRecherche_Change()

 If OptionButton1 = True Then
    code = Me.TextBoxRecherche.Value
  If code <> "" Then
   Me.ListBox1.Clear
   N = 1
    With Sheets("Historique_BI")
        .ListObjects("TableauHistorique_BI").Range.AutoFilter
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=1, _
        Criteria1:=code
          For Each C In .Range("A1:A" & derlig).SpecialCells(xlCellTypeVisible)
            With Me.ListBox1
                .AddItem C
                .List(.ListCount - 1, 1) = C.Offset(0, 1)
                .List(.ListCount - 1, 2) = C.Offset(0, 12)
                .List(.ListCount - 1, 3) = C.Offset(0, 21)
                .List(.ListCount - 1, 4) = C.Row
            End With
         Next C
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=1
    End With
  Else
   Me.ListBox1.Clear
       For i = 1 To derlig
           With Me.ListBox1
                .AddItem Sheets("Historique_BI").Range("A" & i)
                .List(ListBox1.ListCount - 1, 1) = Sheets("Historique_BI").Range("B" & i)
                .List(ListBox1.ListCount - 1, 2) = Sheets("Historique_BI").Range("M" & i)
                .List(ListBox1.ListCount - 1, 3) = Sheets("Historique_BI").Range("V" & i)
                .List(ListBox1.ListCount - 1, 4) = i
           End With
       Next i
  End If
 End If

 If OptionButton2 = True Then
    code = Me.TextBoxRecherche.Value
  If code <> "" Then
   Me.ListBox1.Clear
    With Sheets("Historique_BI")
        .ListObjects("TableauHistorique_BI").Range.AutoFilter
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=2, _
        Criteria1:=code
          For Each C In .Range("A1:A" & derlig).SpecialCells(xlCellTypeVisible)
            With Me.ListBox1
                .AddItem C
                .List(.ListCount - 1, 1) = C.Offset(0, 1)
                .List(.ListCount - 1, 2) = C.Offset(0, 12)
                .List(.ListCount - 1, 3) = C.Offset(0, 21)
                .List(.ListCount - 1, 4) = C.Row
            End With
         Next C
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=2
    End With
  Else
   Me.ListBox1.Clear
       For i = 1 To derlig
           With Me.ListBox1
                .AddItem Sheets("Historique_BI").Range("A" & i)
                .List(ListBox1.ListCount - 1, 1) = Sheets("Historique_BI").Range("B" & i)
                .List(ListBox1.ListCount - 1, 2) = Sheets("Historique_BI").Range("M" & i)
                .List(ListBox1.ListCount - 1, 3) = Sheets("Historique_BI").Range("V" & i)
                .List(ListBox1.ListCount - 1, 4) = i
           End With
       Next i
  End If
 End If

 If OptionButton3 = True Then
    code = "*" & Me.TextBoxRecherche.Value & "*"
  If code <> "" Then
   Me.ListBox1.Clear
    With Sheets("Historique_BI")
        .ListObjects("TableauHistorique_BI").Range.AutoFilter
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=13, _
        Criteria1:=code
          For Each C In .Range("A1:A" & derlig).SpecialCells(xlCellTypeVisible)
            With Me.ListBox1
                .AddItem C
                .List(.ListCount - 1, 1) = C.Offset(0, 1)
                .List(.ListCount - 1, 2) = C.Offset(0, 12)
                .List(.ListCount - 1, 3) = C.Offset(0, 21)
                .List(.ListCount - 1, 4) = C.Row
            End With
         Next C
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=13
    End With
  Else
   Me.ListBox1.Clear
       For i = 1 To derlig
           With Me.ListBox1
                .AddItem Sheets("Historique_BI").Range("A" & i)
                .List(ListBox1.ListCount - 1, 1) = Sheets("Historique_BI").Range("B" & i)
                .List(ListBox1.ListCount - 1, 2) = Sheets("Historique_BI").Range("M" & i)
                .List(ListBox1.ListCount - 1, 3) = Sheets("Historique_BI").Range("V" & i)
                .List(ListBox1.ListCount - 1, 4) = i
           End With
       Next i
  End If
 End If

 If OptionButton4 = True Then
    code = "*" & Me.TextBoxRecherche.Value & "*"
  If code <> "" Then
   Me.ListBox1.Clear
    With Sheets("Historique_BI")
        .ListObjects("TableauHistorique_BI").Range.AutoFilter
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=22, _
        Criteria1:=code
          For Each C In .Range("A1:A" & derlig).SpecialCells(xlCellTypeVisible)
            With Me.ListBox1
                .AddItem C
                .List(.ListCount - 1, 1) = C.Offset(0, 1)
                .List(.ListCount - 1, 2) = C.Offset(0, 12)
                .List(.ListCount - 1, 3) = C.Offset(0, 21)
                .List(.ListCount - 1, 4) = C.Row
            End With
         Next C
        .ListObjects("TableauHistorique_BI").Range.AutoFilter Field:=22
    End With
  Else
   Me.ListBox1.Clear
       For i = 1 To derlig
           With Me.ListBox1
                .AddItem Sheets("Historique_BI").Range("A" & i)
                .List(ListBox1.ListCount - 1, 1) = Sheets("Historique_BI").Range("B" & i)
                .List(ListBox1.ListCount - 1, 2) = Sheets("Historique_BI").Range("M" & i)
                .List(ListBox1.ListCount - 1, 3) = Sheets("Historique_BI").Range("V" & i)
                .List(ListBox1.ListCount - 1, 4) = i
           End With
       Next i
  End If
 End If

End Sub

Bonjour Thev, Xorsankukai et à l'équipe,

J'en profite pour vous remercier, j'ai pris compte des modifications que vous avez apportées concernant la feuille Stock Véhicule, il m'a semblé logique de créer un formulaire de saisie pour le stock véhicule, en ayant repris vos codes, problème à l'ouverture du formulaire "Stock Véhicule".

Pouvez-vous m'indiquer pour quelle raison?

Ci-joint programme màj.

Bonne journée.

Riko

Bonjour,

ci-jointe une version pour votre formulaire de saisie avec un code fondé sur les noms des colonnes de votre tableau Stock Véhicules. Ce code restera invariant si vous insérez de nouvelles colonnes.

Le lien avec combobox ou textbox se fait par le nom de colonne présent dans la propriété : ControlTipText

Bonjour Thev,

J'ai répété la même opération pour le formulaire "Produits" toujours la même erreur, malgré le codage copier, à savoir que pour les produits je n'ai besoin que d'Ajouter ou Modifier.

Peux-tu m'indiquer ce qu'il manquait à mon codage, à quel emplacement (propriété ou autre).

Ci-joint le programme.

Cordialement

Riko

Peux-tu m'indiquer ce qu'il manquait à mon codage

Dans le codage rien.

Le problème est le nom de ta colonne. Tu l'appelles "PRODUITS" alors qu'au niveau du code, le nom que tu utilises est "Description".

J'ai donc juste changé le nom de ta colonne en "Description" et tout fonctionne.

NB : par défaut, à la création du tableau, la première ligne existe. Si l'on veut commencer à la première ligne (via ajout d'une ligne), il faut juste supprimer cette ligne. Une fois supprimée, cette ligne reste malgré tout affichée bien qu'elle n'existe plus.

Thev,

Erreur de novice .

Merci pour ton aide, j'aimerais avoir ton avis concernant le formulaire "Description", est-il nécessaire d'effectuer un formulaire de saisie sachant que le maximum de ligne utilisé est de 20 et qu'elles sont en partie rempli.

2020 06 09 17 50 42 bon intervention 2020 v08062020 v6bis excel

Je fais le test complet du programme .

Bonne soirée à toute l'équipe .

Riko

Thev,

Désolé, il ne m'aura pas fallu longtemps avant de revenir, je vois que tu m'a changé des lignes de code dans les formulaire "Clients Facturé" et "Clients Intervention"

2020 06 09 18 10 40 bon intervention 2020 v08062020 v6bis lecture seule excel

ce qui me crée une erreur.

2020 06 09 18 10 22 microsoft visual basic pour applications bon intervention 2020 v08062020 v6b

Bonsoir,

ci-jointe nouvelle version,

avec complète révision du code qui s'appuie sur les noms de colonnes et permet une simplification du code.

Le lien avec textbox et combobox se fait donc désormais via la propriété ControlTipTexT, ce qui garantit une certaine invariance du code pour les modifications ultérieures

aimerais avoir ton avis concernant le formulaire "Description", est-il nécessaire d'effectuer un formulaire de saisie sachant que le maximum de ligne utilisé est de 20 et qu'elles sont en partie rempli.

Le formulaire se justifie surtout si cette table évolue fréquemment. Si elle est quasiment fixe une fois remplie, le formulaire ne va pas apporter grand chose sauf si des contrôles sont à effectuer.

Thev,

Je viens de faire un essai super, le problème le suivant

2020 06 09 18 55 53 saisie bon intervention

je n'ai plus rien dans mon menu déroulant Technicien1 et 2

Autant pour moi, le seul souci c'est que je suis obligé d'insérer des lignes, je pense qu'il vaut mieux pour moi créer un formulaire de saisie pour Description

Ma date sur "Editer un Bon Intervention" le mois et le jour sont inversés (sur Date du et Date au) , aurais-tu une idée.

2020 06 09 19 06 50 bon intervention 2020 v08062020 v7 1 excel

Merci Thev.

Bonsoir,

ci-jointe correction

Bonsoir Thev,

Après vérification, je n'ai plus la valeur du compteur externe de la feuille Clients Inervention

2020 06 09 20 55 34 bon intervention 2020 v08062020 v7a lecture seule excel

qui viens alimenter à la recherche du client intervention dans le formulaire Bon Intervention 3

2020 06 09 20 55 05 saisie bon intervention

exemple de recherche EHPAD :

2020 06 09 21 05 49 saisie bon intervention

D'ailleurs je n'ai pas la valeur non plus du Clients Facturé, toujours le compteur externe

Riko

Rechercher des sujets similaires à "erreur add listrows"