Erreur exécution dans une commande VBA

Bonjour,

J'ai une feuille dans le classeur excel qui ce nomme "formulaire" qui est dans une "tableau1".

le tableau est ma feuille de commande, j'ai crée un userfrom pour importer la valeur de ma recherche dans mon userfrom

quand mais donnée son importer mon curseur vas automatique mentant dans ma case commande quand je rentre ma quantité dans la case commande j'appuis sur le bouton pour enregistrer la quantité dans la bonne ligne avec comment référence le produits.

j'ai une erreur sur cette ligne de code et je ne parvient a trouver mon erreur Erreur d’exécution '13'

voici ma ligne de code

"Sheets("Formulaire").ListObjects.Item(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

me.rowID est la ligne de référence ou inscrire la valeur de la commande dans la colonne 3.

merci

J'ai ajouter la formule et sa ne fonctionne pas.

voici mon fichier

27saq.xlsm (296.42 Ko)

merci

Bonjour,

Essaie ainsi :

"Sheets("Formulaire").ListObjects(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

Sinon, joins un fichier !...

Cdlt.

Bonjour,

je te joint mon fichier

merci pour les informations envoyer

merci Jean-Eric

10saq.xlsm (296.42 Ko)

Bonjour morneauc, Jean-Eric,

à tout hasard, juste une piste :

10saq.xlsm (303.54 Ko)

dhany

J'ai une feuille dans le classeur excel qui ce nomme "formulaire" qui est dans une "tableau1".

le tableau est ma feuille de commande, j'ai crée un userfrom pour importer la valeur de ma recherche dans mon userfrom

quand mais donnée son importer mon curseur vas automatique mentant dans ma case commande quand je rentre ma quantité dans la case commande j'appuis sur le bouton pour enregistrer la quantité dans la bonne ligne avec comment référence le produits.

j'ai une erreur sur cette ligne de code et je ne parvient a trouver mon erreur Erreur d’exécution '13'

voici ma ligne de code

"Sheets("Formulaire").ListObjects.Item(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

me.rowID est la ligne de référence ou inscrire la valeur de la commande dans la colonne 3.

merci

J'ai ajouter la formule et sa ne fonctionne pas.

voici mon fichier

Bonjour morneauc, Jean-Eric,

à tout hasard, juste une piste :

saq.xlsm

dhany

j'ai une erreur sur cette ligne de code et je ne parvient a trouver mon erreur Erreur d’exécution '13'

voici ma ligne de code

"Sheets("Formulaire").ListObjects.Item(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

me.rowID est la ligne de référence ou inscrire la valeur de la commande dans la colonne 3.

merci

Bonjour,

Essaie ainsi :

"Sheets("Formulaire").ListObjects(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

Sinon, joins un fichier !...

Cdlt.

j'ai une erreur sur cette ligne de code et je ne parvient a trouver mon erreur Erreur d’exécution '13'

voici ma ligne de code

"Sheets("Formulaire").ListObjects.Item(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

me.rowID est la ligne de référence ou inscrire la valeur de la commande dans la colonne 3.

merci

3saq.xlsm (296.42 Ko)

Bonjour morneauc, Jean-Eric,

à tout hasard, juste une piste :

saq.xlsm

dhany

j'ai une erreur sur cette ligne de code et je ne parvient a trouver mon erreur Erreur d’exécution '13'

voici ma ligne de code

"Sheets("Formulaire").ListObjects.Item(1).DataBodyRange(Me.RowID, 3) = Me.TBCommande

me.rowID est la ligne de référence ou inscrire la valeur de la commande dans la colonne 3.

merci

4saq.xlsm (296.42 Ko)

Bonjour,

With .... Formulaire

(l'erreur se trouve ici car faut dire l'userform1 etc)

code

end with

bon:

Option Explicit

Private Sub UserForm_Initialize()
  With Worksheets("Formulaire").[D4]
    UserForm1.TextBox3.Value = .Value: UserForm1.TextBox4.Value = .Offset(1): UserForm1.TextBox5 = .Offset(2)
    UserForm1.TextBox7.Value = .Offset(, 3): UserForm1.TextBox8.value = .Offset(1, 3)
    UserForm1.TextBox6.Value = .Offset(2, 3)
  End With
End Sub

Private Sub CBEntrée_Click()
  Dim lig
  On Error Resume Next
  If TBCommande = "" Then MsgBox "vous avez oublié de " _
    & "mettre votre quantité à commander !": Exit Sub
  lig = Val(RowID): If lig = 0 Then Exit Sub
  With Worksheets("Formulaire")
    .ListObjects(1).DataBodyRange(lig, 3) = Userform1.TBCommande.Value
    UserForm1.TextBox6.Value = .[G6]: .[Q9:Y108].ClearContents
  End With
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  On Error Resume Next
  Worksheets("Formulaire").[N2] = UserForm1.TextBox1.Value
  Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange _
        :=Range("N1:N2"), CopyToRange:=Range("Q8:X8"), Unique:=False
  UserForm1.ListBox3.RowSource = "Rechercher": UserForm1.ListBox4.RowSource = "Rechercher"
  UserForm1.ListBox5.RowSource = "Rechercher": UserForm1.ListBox6.RowSource = "Rechercher"
  UserForm1.ListBox7.RowSource = "Rechercher": RowID.RowSource = "Rechercher"
  ThisWorkbook.RefreshAll
End Sub
23saq-test.xlsm (304.22 Ko)

Bonjour morneauc, André,

je te retourne ton fichier modifié :

11saq.xlsm (319.16 Ko)

j'ai fait plein d'modifs, alors regarde bien tout !


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour,

With .... Formulaire

(l'erreur se trouve ici car faut dire l'userform1 etc)

code

end with

bon:

Option Explicit

Private Sub UserForm_Initialize()
  With Worksheets("Formulaire").[D4]
    UserForm1.TextBox3.Value = .Value: UserForm1.TextBox4.Value = .Offset(1): UserForm1.TextBox5 = .Offset(2)
    UserForm1.TextBox7.Value = .Offset(, 3): UserForm1.TextBox8.value = .Offset(1, 3)
    UserForm1.TextBox6.Value = .Offset(2, 3)
  End With
End Sub

Private Sub CBEntrée_Click()
  Dim lig
  On Error Resume Next
  If TBCommande = "" Then MsgBox "vous avez oublié de " _
    & "mettre votre quantité à commander !": Exit Sub
  lig = Val(RowID): If lig = 0 Then Exit Sub
  With Worksheets("Formulaire")
    .ListObjects(1).DataBodyRange(lig, 3) = Userform1.TBCommande.Value
    UserForm1.TextBox6.Value = .[G6]: .[Q9:Y108].ClearContents
  End With
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  On Error Resume Next
  Worksheets("Formulaire").[N2] = UserForm1.TextBox1.Value
  Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy, CriteriaRange _
        :=Range("N1:N2"), CopyToRange:=Range("Q8:X8"), Unique:=False
  UserForm1.ListBox3.RowSource = "Rechercher": UserForm1.ListBox4.RowSource = "Rechercher"
  UserForm1.ListBox5.RowSource = "Rechercher": UserForm1.ListBox6.RowSource = "Rechercher"
  UserForm1.ListBox7.RowSource = "Rechercher": RowID.RowSource = "Rechercher"
  ThisWorkbook.RefreshAll
End Sub

merci Beaucoup

j'ai voie que j'avais beaucoup de chose a corrigé

merci

Quand j'inscri la quantité a commander et que J'appuis sur le boutton la quantité ne se transfert pas dans le tableau excel .

associer a son UPC.

merci encore tres apprécier.

Bonjour morneauc, André,

je te retourne ton fichier modifié :

saq.xlsm

j'ai fait plein d'modifs, alors regarde bien tout !


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

merci André

Wow sa fonctionne bien , mais le code UPC (code a barre)vas etre apparaitre par un lecteur optique dons il faut laisser ou a main je ne doit pas inscrire le zero ce pour cas qu'il rechercher la valeur du code UPc.

merci beaucoup encor.

@morneauc

screen

merci pour ton retour, mais moi j'suis dhany, pas André.

t'as pas vu ma signature, devant le p'tit sauteur vert ?

dhany

@morneauc

Screen.jpg

merci pour ton retour, mais moi j'suis dhany, pas André.

t'as pas vu ma signature, devant le p'tit sauteur vert ?

dhany

désolé!!

merci DHany

tu a écrit :

mais le code UPC (code barre) va être écrit par un lecteur optique, donc il faut laisser ou à main je ne dois pas inscrire le zéro ce pour cas qu'il rechercher la valeur du code UPC.

j'ai pas bien compris ta phrase ; j'ai réécrit le début jusqu'à « donc il faut laisser, » ; et ensuite ? peux-tu reformuler la suite ?

de quel code UPC parles-tu ? la cellule N2 de la feuille de calcul ? la TextBox jaune de UserForm1 ? les deux à la fois ?

le scanner va lire le code barre UPC et le mettre en N2, puis ce contenu de N2 doit être repris automatiquement dans la TextBox jaune du UserForm ? c'est bien ça ? ou c'est autre chose ?

précise à quel endroit faut laisser : sur la feuille de calcul ou sur le UserForm ? et où dessus : quelle cellule, ou quel TextBox / Label ?

et où ça, tu dois pas inscrire le zéro ? tu parles d'un chiffre zéro isolé ou du 1er chiffre zéro du CUP ?


as-tu remarqué que dans UserForm1, j'ai remplacé toutes tes ListBox par des Labels ? j'ai pas compris pourquoi t'avais utilisé des ListBox, et j'trouve que c'est bien plus simple avec des Labels ! il faut alors utiliser .Caption ; et j'ai renommé tous les objets du formulaire.

par exemple : CUPCL = Code UPC, Label (qui est le texte "Code UPC") ; CUPCV = Code UPC, Valeur (qui est un label aussi)


pour ton Frame2, tu avais 2 autres copies Frame3 et Frame4, que j'ai supprimés ; il y a donc Frame1 et Frame2 ; pas d'autre Frame.

dhany

tu a écrit :

mais le code UPC (code barre) va être écrit par un lecteur optique, donc il faut laisser ou à main je ne dois pas inscrire le zéro ce pour cas qu'il rechercher la valeur du code UPC.

j'ai pas bien compris ta phrase ; j'ai réécrit le début jusqu'à « donc il faut laisser, » ; et ensuite ? peux-tu reformuler la suite ?

de quel code UPC parles-tu ? la cellule N2 de la feuille de calcul ? la TextBox jaune de UserForm1 ? les deux à la fois ?

le scanner va lire le code barre UPC et le mettre en N2, puis ce contenu de N2 doit être repris automatiquement dans la TextBox jaune du UserForm ? c'est bien ça ? ou c'est autre chose ?


as-tu remarqué que dans UserForm1, j'ai remplacé toutes tes ListBox par des Labels ? j'ai pas compris pourquoi t'avais utilisé des ListBox, et j'trouve que c'est bien plus simple avec des Labels ! il faut alors utiliser .Caption ; et j'ai renommé tous les objets du formulaire.

par exemple : CUPCL = Code UPC, Label (qui est le texte "Code UPC") ; CUPCV = Code UPC, Valeur (qui est un label aussi)


pour ton Frame2, tu avais 2 autres copies Frame3 et Frame4, que j'ai supprimés ; il y a donc Frame1 et Frame2 ; pas d'autre Frame.

dhany

Bonjour dhany

le userfrom va ouvrire en premier le cursseur par défaut est dans le textbox jaune que tu crée avec le lecteur oprtice vas ecrire le code dans le textbox et par la suite et le text box vas ecrire les code dans la cellue n2 et par la suite il lance la recherche du produits dans la base de donner, par la suite le curseur déssent dans le case commande pour inscrire la commande souhaiter et en appuis sur enter la commande devrais allez ce positione dans la bonne case et le curser du devrais remont dans le textbox jaune .

merci de me donner de l'information

tres tres apprécier

Bonjour morneauc,

si j'ai bien compris ton texte, il y a ces 5 étapes (en bleu, c'est mes commentaires) :

1) le UserForm va s'ouvrir, et le curseur est par défaut dans la TextBox jaune CUPCV.

actuellement, quand sur la feuille de calcul on clique sur le bouton « Commande », ça ouvre UserForm1, et le curseur est déjà par défaut dans la TextBox jaune CUPCV ➯ c'est prêt pour scanner le code barre.

c'est la sub UserForm_Initialize() qui écrit les 6 infos de Frame1 et Frame2 ; le « IC » de ICV1, ICV2, ICV3 est pour « Informations Client » ; le « IA » de IAV1, IAV2, IAV3 est pour « Informations d'Approvisionnement ».

(la lettre V est pour Valeur ; pour différencier du L de Libellé ; tous les contrôles des Frames sont des labels)

2) on scanne le code barre avec le lecteur optique ➯ ça écrit le code numérique dans CUPCV.

comme j'ai pas de scanner, je saisis au clavier le code CUP dans la TextBox jaune ; en principe, ça devra faire la même chose avec le scanner : dans les 2 cas, le code CUP est dans la TextBox jaune.

3) le code numérique de CUPCV est recopié dans la cellule N2.

ça lance la recherche du produit dans la base de données.

le curseur descend dans la case « QTE en commande » QCV.

comme j'ai validé ma saisie du code CUP avec la touche Entrée, la sub CUPCV_BeforeUpdate() est exécutée automatiquement ; elle fait alors tout ceci :

sur la feuille "Formulaire" : ça écrit dans la cellule N2 le code CUP de la TextBox jaune.

ça cherche le code CUP en colonne G ; si non trouvé, sortie de sub ; s'il est trouvé :

cel.Row est le n° de ligne de la cellule du code CUP trouvé.

on écrit dans le label bleu RowID le n° ligne du tableau = n° ligne de la cellule - 8.

sur la feuille "Répertoire des produits" : ça cherche le code CUP en colonne C.

en principe, ça doit toujours le trouver, mais j'ai quand même mis une sécurité :

If cel Is Nothing Then Exit Sub ➯ si non trouvé, sortie de sub.

si trouvé, cel.Row contient le bon n° de ligne ➯

on écrit dans le UserForm les infos des 5 labels blancs :

* Nom du Produit dans le label NPdtV

* Code Article dans le label CArtV

* Format dans le label FmtV

* UVC dans le label UVCV

* Catégorie dans le label CtgV

attention : quand ça passe automatiquement de la TextBox jaune CUPCV à la TextBox grise QCV,

avec ton scanner, j'sais pas si ça fera pareil, ou si c'est une option du scanner à paramétrer.

4) «inscrire la commande souhaitée», c'est saisir « QTE en commande » : la qté ; puis Entrée.

la qté va dans la bonne case bleue de la colonne C.

eh oui, même si t'as un scanner, tu devras quand même saisir au clavier la quantité.

après avoir fait ce gros effort, faut encore cliquer sur le bouton Entrée

la sub CBEntrée_Click() est exécutée automatiquement, et elle fait ceci :

si QCV vaut 0 (car rien n'a été saisi, ou si tu as saisi 0), ça affiche le message :

« vous avez oublié de mettre votre quantité à commander ! » et sortie de sub.

donc c'est seulement si la quantité est supérieure à 0 qu'ça fait la suite ;

et j'pense pas qu'tu vas saisir des quantités négatives, pas vrai ?

ça sort aussi de la sub si y'a pas de Code Article, car dans ce cas, ça veut dire :

IAV3 ; c'est à droite du texte « Nombre de caisses total en commande : ».

5) le curseur remonte en CUPCV pour le scan suivant.

ça, c'est pas fait ! j'vais l'rajouter, avec aussi l'effacement de toutes les infos

du UserForm, sauf celles des 2 Frames.

dhany

@morneauc

lis d'abord mon post précédent, puis celui-ci.

voici la nouvelle version :

23saq.xlsm (319.75 Ko)

à te lire pour avoir ton avis.

dhany

@morneauc

lis d'abord mon post précédent, puis celui-ci.

voici la nouvelle version :

saq.xlsm

à te lire pour avoir ton avis.

dhany

merci pour toute les informationsprécice dans ton document,

merci

quand je Scan le produits le code upc apparais bien dans la case de code upc jaune mais par contre les les autre champe ne se remplie pas

Si je j'entre le code UPC sans le premier zéro les autre champs ne se remplie pas....

je tres débutant dans ce dommaine désole

merci encore

j'connais les scanners et douchettes que de nom, j'en n'ai jamais utilisé ; donc j'peux pas t'aider plus pour ça ; j'espère que Steelson (qui les connaît très bien), ou un autre intervenant pourront t'aider davantage ; bonne chance !

dhany

Rechercher des sujets similaires à "erreur execution commande vba"