IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[debutant] Vérification du programme et aide pour le finaliser [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [debutant] Vérification du programme et aide pour le finaliser
    Bonjour à tous et à toute, je viens de finir un programme en vba qui me permet de sélectionner la dernière cellule d'une colonne , jusque la pas de soucis. Hors maintenant je souhaite insérer dans cette dernière cellule une information de code barre que j'aurai relevé avec une douchette, pour ce faire je me suis servi de la fonction with, mais quand je lance l’exécution je reçois un message qui m'indique "l'objet associé à with doit être de type défini par l'utilisateur, Object ou variant. Je me suis jamais servis des with je sais pas si c'est la meilleur solution pour cela. Désolé je débute en vba.

    Programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Vid ()
    Dim Espace As Object
    Dim Lig As Long
    Lig = 7
    Do While Not IsEmpty(Range("A" & Lig))
        Lig = Lig + 1
    Loop
        With Espace
    Cells(Lig, 1).Value = Espace.Value
        End With
    End Sub
    Pouvez vous m'aider s'il vous plait. Bonne après midi à vous.

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Baba, bonjour le forum,

    Le problème ne vient pas du With ... End With. Tu dois définir l'objet Espace avec un Set Espace = ...
    Mais n'ayant aucune idée de ce à quoi cela correspond, je ne peux pas t'aider davantage. Ton code devrait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Vid()
    Dim Espace As Object
    Dim Lig As Long
     
    Lig = Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    Set Espace = ?
    Cells(Lig, 1).Value = Espace.Value 'le Value va dépendre de comment tu as défini "Espace"
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Espace
    Cells(Lig, 1).Value = Espace.Value
    End With
    Si vous définissez un bloc "With... End With" il n'est intéressant que si l'on s'en sert plus d'une fois! ici on écrirait plutôt " .value " qui serait en référence à l'objet Espace ; mais autant ne pas utiliser de bloc With...

    Ce qui ne fonctionne pas c'est que vous faites référence à une instance d'objet qui n'existe pas...

    Il faut que cet objet existe par une affectation avec set par exemple.

    Geogeo70

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    En faite pour expliquer depuis le début, j'ai en ma possession une douchette pour scanner des code barre. La valeur de se code barre s'appelle Espace ,je possède aussi un classeur excel dans lequel sont répertorié tous les références des produits. Pour éviter de descendre tout en bas j'ai crée un module pour je cherche la première cellule vide, une fois que je l'ai trouvé cette cellule vide, je souhaite insérer dans cette cellule vide la valeur de code barre.

    Est ce que c'est possible de faire cela ?

    Merci.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Rebonjour, je viens de me servir du code qui m'a était transmis précédemment je vous remercie encore, mais quand j'essaye ce code ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_Change()
    Dim Ser 
    Cells(Lig, 1).Value = Intervention.TextBox1.Value
    Ser = Right(Cells(Lig, 1), 7)
    Intervention.TextBox3.Value = Ser  
    End Sub
    Pour dans un premier temps recevoir, un code barre saisi au clavier, cette valeur je la met dans une cellule vide. Puis avec cela j'en déduit le numéro de série, pour l'afficher sur mon userform.

    Hors lorsque je lance l’exécution du programme, je reçois un message d'erreur "erreur définit par l’application ou par l'objet". J'ai beau vérifier le programme je vois pas d'erreur, pour la variable Lig, je l'ai insérée dans une macro, dont je vous donne le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Lig As Long
     
    Sub Ligne()
    Lig = Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    End Sub
    J'ai déclarer Lig comme variable public pour pouvoir l'utiliser partout dans mes codes. Est ce une erreur de ma part ?

    Bonne soirée.

  6. #6
    Membre averti
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Points : 442
    Points
    442
    Par défaut
    re,

    Puisque vous cherchez une valeur autant écrire une fonction plutôt qu'une procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Ligne()as Long
    Ligne = Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    End Function
    et l'utilisez lorsque vous avez besoin de la ligne : Lig=Ligne

    Private Sub TextBox1_Change()
    Dim Ser 'Pourquoi? Quel type de variable?
    dim ws as Worksheet 'Définition de la feuille de travail

    set ws=Worksheets("<Nomde votre feuille>") 'à remplacer!

    ' ici j'ajouterai le calcul de ligne
    Lig =Ligne
    'désactivation des événements pour éviter des "bouclages"
    Application.EnableEvents = False

    ws.Cells(Lig, 1).Value = Intervention.TextBox1.Value ' Pourquoi le nom du userform il suffit d'écrire Textbox1.Value
    Ser = Right(ws.Cells(Lig, 1), 7)
    Intervention.TextBox3.Value = Ser 'idem Textbox3.Value

    'activation des événements
    Application.EnableEvents = True

    End Sub

    Voilà quelques remarques sur le code. Je ne sais pas si c'est un problème, j'utiserais plutôt le "Controlsource" des textbox directement dans l'initialisation du userform.

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    Ta douchette te donne l'équivalent d'une frappe du code barre au clavier ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Oui en effet c'est bien cela, je vous remercie pour le code il m'a bien aidé sauf que j'ai un deuxième problème.
    Si vous voulez quand je fais un essaie de saisie de plusieurs chiffres, j'ai cela

    Nom : Prob.png
Affichages : 71
Taille : 1,8 Ko

    Au lieu d'avoir un code complet. Les Worksheet sont la car je travail sur deux feuilles différentes. Mais utilisant toutes les deux le scanner, mais le problème est le même pour les deux
    Est ce que c'est possible d’éviter ce bouclage ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub TextBox1_Change()
    Dim Ser
    Dim lig As Long
    Call Ligne
    lig = Ligne
    Worksheets("SAV").Cells(lig, 1).Value = TextBox1.Value
     Ser = Right(Worksheets("SAV").Cells(lig, 1), 7) 
     Intervention.TextBox3.Value = Ser
     Intervention.TextBox4.Value = Worksheets("SAV").Cells(lig, 2)
     
     End Sub
    Et voici la fonction pour m'aider à trouver la premier cellule vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function Ligne() As Long
    Worksheets("SAV").Select
    Ligne = Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    Application.EnableEvents = False
    End Function
    Merci d'avance, bonne fin de journée à vous.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    C'est bon j'ai trouver mon erreur cela venait de mon Private Sub TextBox1_Change() ^^
    Car des que je taper une valeur sur mon clavier il passer à la ligne suivante.

    Bonne journée à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un programme d'aide pour optimiser les fichiers XML
    Par Sylvaner dans le forum Android
    Réponses: 3
    Dernier message: 21/06/2014, 18h10
  2. Aide pour une finalisation
    Par rockley dans le forum Services Web
    Réponses: 0
    Dernier message: 06/07/2011, 10h30
  3. [VBA-E][DEBUTANT]Ouvrir un fichier d'aide pour le consulter
    Par Ender dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/09/2006, 19h04
  4. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo