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

VB 6 et antérieur Discussion :

Simplification de code avec une procedure


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut Simplification de code avec une procedure
    Bonjour,

    Sur ma feuille frmrecherche j'ai un cmdOk qui me remplis une listview en fonction des selections faites dans des combobox.
    Ca marche tres bien avec une serie de if qui verifie ce qui est demandé au niveau de la recherche.
    Mon probleme c'est qu'une partie de mon code revient plusieur fois.
    Donc je pensais créer une procedure du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Ecrit(ByVal a As Long)
              Set liMyListItem = frmresultat.ListView1.ListItems.Add(, , r.Offset(a, 0).Value)
              liMyListItem.ListSubItems.Add(1) = r.Offset(a, 1).Value
              liMyListItem.ListSubItems.Add(2) = r.Offset(a, 2).Value
              liMyListItem.ListSubItems.Add(3) = r.Offset(a, 3).Value
              liMyListItem.ListSubItems.Add(4) = r.Offset(a, 4).Value
              liMyListItem.ListSubItems.Add(5) = r.Offset(a, 5).Value
              liMyListItem.ListSubItems.Add(6) = r.Offset(a, 6).Value
              liMyListItem.ListSubItems.Add(7) = r.Offset(a, 7).Value
              liMyListItem.ListSubItems.Add(8) = r.Offset(a, 8).Value
              liMyListItem.ListSubItems.Add(9) = r.Offset(a, 9).Value
    End Sub
    Le problème c'est qu' il me dit un objet est requis. Apparament j'ai un probleme avec ma feuille excel.
    J'appele la procedure par
    Comment puis je faire.
    Merci.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben .. ta variable r...? elle est déclaré/initialisée ou ...?

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub Cmdok_Click()
    Set r = wsExcel.Cells(1, 1)
        Dim liMyListItem As ListItem
     
    If Cmbchoix().ListIndex = 0 Then
     a = 0
       For y = 0 To 10000
            If Cmbpremierchoix().Text = r.Offset(a, 4).Value Then
                Call Ecrit(a)
            End If
            a = a + 1
            If r.Offset(a, 1).Value = "" Then Exit For
        Next y
    End If
    End Sub
     
    Private Sub Ecrit(ByVal a As Long)
              Set liMyListItem = frmresultat.ListView1.ListItems.Add(, , r.Offset(a, 0).Value)
              liMyListItem.ListSubItems.Add(1) = r.Offset(a, 1).Value
              liMyListItem.ListSubItems.Add(2) = r.Offset(a, 2).Value
              liMyListItem.ListSubItems.Add(3) = r.Offset(a, 3).Value
              liMyListItem.ListSubItems.Add(4) = r.Offset(a, 4).Value
              liMyListItem.ListSubItems.Add(5) = r.Offset(a, 5).Value
              liMyListItem.ListSubItems.Add(6) = r.Offset(a, 6).Value
              liMyListItem.ListSubItems.Add(7) = r.Offset(a, 7).Value
              liMyListItem.ListSubItems.Add(8) = r.Offset(a, 8).Value
              liMyListItem.ListSubItems.Add(9) = r.Offset(a, 9).Value
    End Sub
    Une ideé

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bon il on ne voit toujours pas de déclaration pour la variable r.. ( une ligne Dim...)

    par exemple ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Cmdok_Click()
    Dim r as range
    Set r = wsExcel.Cells(1, 1)
    
    (...) 
    Call Ecrit(a,r)
    (...)
    
    End sub
    
    Private Sub Ecrit(ByVal a As Long, r as range)
              Set liMyListItem = ...
    (...)

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Ne devrais-tu pas passer r en paramètre dans ta procédure Ecrit?

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par zazaraignée
    Salut

    Ne devrais-tu pas passer r en paramètre dans ta procédure Ecrit?
    bonjour Zaza ... merci pour le rajout d'une description à mes suggestions de modification de codes ici

  7. #7
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    Bonsoir,
    Merci, bbil.
    J'avais essayer de passer r en parametre mais j'avais pas mis.
    Mais pourquoi je suis obliger de declarer r as range alors que dans mon code de depart je ne l'ai pas et ca marche.
    Je suis pas un pro je fais ca pour le plaisir et souvent des choses m'echappent.
    Merci encore pour tout.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben en déclarant la fonction.. Ecrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Ecrit(ByVal a As Long, r as range
    on spécifie que le 2° paramétre doit être un range...

    ensuite VB est plutôt souple sur la déclaration de variables.. et si tu ne fais pas il "le fait" pour toi .. et dans ton cas déclare une variable locale r en Variant..le "locale" signifiant que sa portée est limité à la procédure dans laquelle elle la variable est déclarée.. ce qui fait que tu ne peu y accéder ailleurs...Cette "souplesses" à ses reverts et peu amener as des erreurs .. ( erreur de frappe sur le nom de variables, variables locale sur lesquelles on pense pouvoir intervenir depuis une procédure hors de portées...) pour éviter cela ... rajoute en haut de ton projet la ligne :
    avec cette ligne VB vérifie au moment de la compilation que toutes les variables sont déclarées et accessibles...

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 22
    Par défaut
    Ok bbil et encore merci.

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

Discussions similaires

  1. Ajouter des champ dans une table avec une procedure sp
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/07/2006, 19h32
  2. Ouverture de fichier avec une procedure !!
    Par pinto_armindo dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2006, 16h44
  3. help sur le code d'une procedures stockee
    Par omlip dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/08/2004, 19h45
  4. [C#] [Oracle] Probleme avec une procedure stockée
    Par sronin1 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2004, 20h04
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 23h00

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