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 :

données dans une référence [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut données dans une référence
    Bonjour à tous

    Je viens de trouver une petite erreur dans mon code mais je ne sais pas comment la régler.

    J'utilise des noms pour faire référence à des colonnes et par la suite les données de ces colonnes serve à peupler une comboBox. Mon problème c'est que en le faisant comme ça vba me sort tous les cellules de la colonne y compris ceux qui ne contienne aucune données. Je voudrais savoir comment changer mon code pour que VBA utilise seulement les cellules de ma référence qui contienne des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Case Nequipement55.Value
     
              Case "Commutateur"
                  Me.Nproduit55.List = Worksheets("Produits").Range("Commutateur").Value
    ceci est mon code actuel. Je sais comment aller chercher dernière cellule contenant de l'information en utilisant .End(xlDown) et il s'agit surement de me faire un range en l'utilisant. Je suis un peu à court d'idée.

    Merci pour vos suggestion comme toujours =o)

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    sans connaitre ton problème, pour repérer ta derniere ligne, je préfère utiliser cette formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a" & Rows.Count).End(xlUp).Row
    si tes données sont en A bien sur plutot que .End(xlDown)

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Je ne suis pas très familier avec la méthode Intersect mais est ce que c'est qqc qui pourrait marcher?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Me.Nproduit1.List = Intersect(Worksheets("Produits").Range("Commutateur")).End(xlDown, Worksheets("Produits").Range("Commutateur")).Value
    Je sais que la syntaxe n'est pas la bonne par contre

  4. #4
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    La méthode intersect de la façon dont je la voyais ne fonctionne pas, j'avais oublié que xldown retourne une seule cellule et non pas une plage.

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Si j'ai bien compris, ceci devrait convenir
    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
    Dim i As Integer, Col As Integer
     
    With Sheets("Produits")
     
        Select Case Nequipement55.Value
            Case "Commutateur"
                Col = .Range("Commutateur").Column
            Case "Tarte aux pommes" '...les autres conditions
                Col = .Range("Tarte aux pommes").Column
        End Select
     
        For i = 2 To .Cells(Rows.Count, Col).End(xlUp).Row '<-- de la ligne 2 (à adapter) à la dernière ligne
            If .Cells(i, Col) <> "" Then Me.Nproduit55.AddItem .Cells(i, Col)
        Next
     
    End With

  6. #6
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Super, ca fonctionne à merveille!

    Merci Beaucoup Fring

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2010, 11h13
  2. Saisie de données dans une procédure stockée
    Par Hastaroth dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/10/2004, 09h54
  3. Vérification du type de données dans une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 11h20
  4. Paradox 7 Comment trier et marquer données dans une DBgrid
    Par technico dans le forum Bases de données
    Réponses: 12
    Dernier message: 04/07/2004, 11h08
  5. Données dans une DBgrid
    Par camino dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/02/2004, 03h40

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