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 :

Probleme fonction selection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut Probleme fonction selection
    Bonjour à tous,

    Je souhaite créer une fonction qui me permette de sélection un range (elle doit renvoyer quelques chose de la forme "A1:C10") selon le code VBA ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function SelectionTAB(ID As Variant) As String
    m = 0
    Range("A:A").Select
    k = Selection.Find(What:=ID, After:=ActiveCell, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Row
     
    m = k
    Do Until Cells(m, 1) <> ID
    m = m + 1
    Loop
    SelectionTAB = (Worksheets(1).Cells(k, 1).Address & Worksheets(1).Cells(m - 1, 10).Address)
     
    End Function
    Tout est expliqué dans le fichier ci joint. Avez vous une réponse à mon probleme?

    Merci à tous,
    Xuan
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonsoir

    En mettant la valeur recherché (xxxx1111) dans L2

    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
    Sub devellopez_com()
    Dim cell As Range
    Dim ID As String
    Dim k As Integer
     
    ID = Range("l2").Value
     
    lig = Range("a65000").End(xlUp).Row
    For Each cell In Range("a1:a" & lig)
        If cell.Text = ID Then
        k = cell.Row
        End If
    Next cell
     
    Range("a2:j" & k).Select
     
    End Sub
    On obtient la selection du tableau voulu.

    Je ne dis pas que c'est LA solution, il doit y avoir autre chose mais ne sachant d'ou vienne tes données ou ce que tu veux en faire.
    Puisse ce peti bout de code t'inspirer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Merci bcp pour votre réponse, mais je tiens absolument à créer une fonction et non pas une sub. Pour etre plus clair, je souhaite obtenir le meme résultat que celui de la sub contenue dans le fichier ci joint...jusqu a présent impossible d'y arriver! Help!
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une fonction (qui prend en charge la feuille de recherche)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function SelectRange(ByVal Feuille As String, ByVal Id As String) As String
    Dim Ws As Worksheet
    Dim c As Range, v As Range
     
    Set Ws = Worksheets(Feuille)
    Set c = Ws.Range("A:A").Find(Id, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
    If Not c Is Nothing Then
        Set v = Ws.Range("A:A").Find(Id, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious)
        SelectRange = c.Resize(v.Row - c.Row + 1, 10).Address(0, 0)
        Set v = Nothing
        Set c = Nothing
    End If
    Set Ws = Nothing
    End Function
    La fonction est appelée dans une cellule (si l'id est dans O1 de Feuil1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SelectRange("Feuil1";O1)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Merci bcp mercatog!
    La fonction marche bien pour sélectionner le range demandé.
    Finalement, je souhaiterais ne pas sélectionner les deux premières colonnes dans le résultat de la fonction, ie j'ai besoin d'un range dont la colonne de départ est C, celle de fin est J.
    Savez vous quelles modifications appliquer?

    merci d'avance
    xuan

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    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
    Function SelectRange(ByVal Feuille As String, ByVal Id As String) As String
    Dim Ws As Worksheet
    Dim c As Range, v As Range
     
    Set Ws = Worksheets(Feuille)
    Set c = Ws.Range("A:A").Find(Id, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
    If Not c Is Nothing Then
        Set v = Ws.Range("A:A").Find(Id, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious)
        SelectRange = c.Offset(0, 2).Resize(v.Row - c.Row + 1, 8).Address(0, 0)
        Set v = Nothing
        Set c = Nothing
    End If
    Set Ws = Nothing
    End Function

Discussions similaires

  1. Probleme itemlistener avec fonction select et composant Choice
    Par simonphenix dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/07/2009, 11h23
  2. Probleme avec fonction SELECT FROM WHERE
    Par tatann22 dans le forum Langage
    Réponses: 5
    Dernier message: 27/03/2009, 01h01
  3. probleme fonction gethostbyname
    Par oclone dans le forum Développement
    Réponses: 6
    Dernier message: 14/04/2005, 10h31
  4. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28
  5. probleme fonction syntaxe
    Par gIch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 09h52

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