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 :

Activer cellule via variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut Activer cellule via variable
    Bonjour ,

    Je possède une variable nommée "var_id_client" dans laquelle j'ai une certaine valeur, ainsi je voudrais activer la cellule dans une feuille nommée "table adresse contact" qui contient la valeur se trouvant dans la variable "var_id_client".
    La cellule se trouve en colonne B.


    Autre problème , dans une feuille "table adresse contact" en colonne B , j'ai une variable nommée "var_id_client" qui est égale à différents nombres.

    Par exemple si je sélectionne le client 'toto' j'aurai un "var_id_client" qui sera égale a 22 , le problème c'est que je peux avoir plusieurs "var_id_client" correspondant à 'toto' ,c'est à dire plusieurs 22 dans la colonne B.

    Ainsi , je n'arrive à récupérer qu'un seul des '22' alors que moi je voudrais tous les récupérer , comment faire?

    Voici un fichier en pièce jointe qui montre la disposition des données pour le deuxième problème.

    Bonne journée.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Tu peux compter le nombre de fois où tu trouve ton 22.
    Ensuite tu peut te créer une fonction pour trouver les références de tes cellules en vb?

    Cordialement.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Avec un tableau?

  4. #4
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Une boucle For serais plus simple de x à nombre de 22 trouvé...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Oui par exemple, tu peux compter le nombre de lignes non vides que tu as (NBVAL), et te créer une fonction parcourant ta colonne B sur ces ligne et testant si la case vaut 22. Si oui tu sauvegarde le numéro de ligne ou bien tu chope directement les 4 colonnes t'intéressant. J'ai pas encore essayé mais ça doit être jouable .

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Et bien c'est a peu près ceux que j'avais essayé mais sans réussite ..

    Voici mon code :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     ActiveWorkbook.Sheets("Table Adresse Contact").Activate Var_Nb_Contact = 0
     
     
      Do
        If ActiveCell.Value = Var_Num_ID_Adresse_Equipement Then
        ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
     
        Var_Nb_Contact = Var_Nb_Contact + 1
     
         Else
         MsgBox ("Pas trouvé de Contact")
         End If
     
        Loop While (ActiveCell.Value = Var_Num_ID_Adresse_Equipement)
     
     Do
        If ActiveCell.Value = Var_Num_ID_Adresse_Equipement Then
        ActiveCell.Offset(rowOffset:=0, columnOffset:=0).Activate
         'MsgBox "pause1"
     
     
        Dim intI As Integer
        For intI = 0 To Var_Nb_Contact - 1
     
            'Active la cellule décallée de 1 vers la droite
                     ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
               'MsgBox "pause nom contact"
            'Enregistre la valeur de la cellule active dans la variable Var_Motif
                     tab_Nom_Contact(intI) = ActiveCell.Value
     
            'Active la cellule décallée de 3 vers la droite
                     ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate
                'MsgBox "pause tel contact"
            'Enregistre la valeur de la cellule active dans la variable Var_Motif
                     tab_Num_contact_tel(intI) = ActiveCell.Value
     
            'Active la cellule décallée de 3 vers la droite
                     ActiveCell.Offset(rowOffset:=0, columnOffset:=3).Activate
               'MsgBox "pause mail contact"
            'Enregistre la valeur de la cellule active dans la variable Var_Motif
                     tab_mail_contact(intI) = ActiveCell.Value
     
     
            'Active la cellule décallée 1 vers le bas et 7 vers la gauche pour retourner au point de départ
                     ActiveCell.Offset(rowOffset:=1, columnOffset:=-7).Activate
     
     
        Next
       'fin definition tableau stockage valeur Nom_contact
     
    Sheets("FI-CE").Range("AM25").FormulaR1C1 = tab_Nom_Contact(0)
        Sheets("FI-CE").Range("AM29").FormulaR1C1 = tab_Num_contact_tel(0)
        Sheets("FI-CE").Range("AM27").FormulaR1C1 = tab_mail_contact(0)
     
            Sheets("FI-CE").Range("AM33").FormulaR1C1 = tab_Nom_Contact(1)
            Sheets("FI-CE").Range("AM37").FormulaR1C1 = tab_Num_contact_tel(1)
            Sheets("FI-CE").Range("AM35").FormulaR1C1 = tab_mail_contact(1)
     
                Sheets("FI-CE").Range("AM41").FormulaR1C1 = tab_Nom_Contact(2)
                Sheets("FI-CE").Range("AM45").FormulaR1C1 = tab_Num_contact_tel(2)
                Sheets("FI-CE").Range("AM43").FormulaR1C1 = tab_mail_contact(2)
     
                    Sheets("FI-CE").Range("AM49").FormulaR1C1 = tab_Nom_Contact(3)
                    Sheets("FI-CE").Range("AM53").FormulaR1C1 = tab_Num_contact_tel(3)
                    Sheets("FI-CE").Range("AM51").FormulaR1C1 = tab_mail_contact(3)
     
                       Sheets("FI-CE").Range("AM57").FormulaR1C1 = tab_Nom_Contact(4)
                        Sheets("FI-CE").Range("AM61").FormulaR1C1 = tab_Num_contact_tel(4)
                        Sheets("FI-CE").Range("AM59").FormulaR1C1 = tab_mail_contact(4)
     
                            Sheets("FI-CE").Range("AM65").FormulaR1C1 = tab_Nom_Contact(5)
                            Sheets("FI-CE").Range("AM69").FormulaR1C1 = tab_Num_contact_tel(5)
                            Sheets("FI-CE").Range("AM67").FormulaR1C1 = tab_mail_contact(5)
     
                                Sheets("FI-CE").Range("AM73").FormulaR1C1 = tab_Nom_Contact(6)
                                Sheets("FI-CE").Range("AM77").FormulaR1C1 = tab_Num_contact_tel(6)
                                Sheets("FI-CE").Range("AM75").FormulaR1C1 = tab_mail_contact(6)
     
     
                                    Sheets("FI-CE").Range("AM81").FormulaR1C1 = tab_Nom_Contact(7)
                                    Sheets("FI-CE").Range("AM85").FormulaR1C1 = tab_Num_contact_tel(7)
                                    Sheets("FI-CE").Range("AM83").FormulaR1C1 = tab_mail_contact(7)
    En faisant ceci je n'arrive pas à récupérer les données qui m'intéresse ou seulement un seul des contacts.

    Ps: le nombre 22 était juste un exemple.

    Et au sujet de la sélection d'une cellule par rapport à une variable enregistré j'agis de cette façon mais sa ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Var_ID_client.Address).Select
    Je pense que cette façon de faire ne s'applique pas pour les variables.

  7. #7
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Pour ta variable de cellule, quelle valeur lui donnes tu?

    Ex Variable = A5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Variable).Activate
    Ca doit marcher.

    Pour la boucle définie déjà combien de ligne non vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D_line = Range("A65536").End(xlUp).Row
    Tu définie donc bien ta zone de recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Zone1 = Range("A1:A" &D_line )
    Ensuite tu boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each cell In Zone1
    If cell = Variable Then
    TaValeurrechercher=cell.Offset(1,0)
     
    Ton traitement que tu veux
    End If
    Next cell
    Par exemple de base...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    CODYCO ,

    J'ai nommée ma variable 'var_id_client' ,déclarée de cette façon là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim var_id_client As Integer
    Elle prend la valeur d'une cellule selon une sélection d'un nom de client avec le code 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
     Range("B" & 2 + Me.NcRecherche.ListIndex).Select
     
                                  UserForm_Nom_Client.Hide
     
                                 MsgBox "Nom de Client renseigné!"
     
     
               'Active la cellule décallée de 1 vers la gauche
     
                ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Activate
     
                 'Enregistre la valeur de la cellule active dans la variable VAR_ID_Equipment
     
                   var_id_client = ActiveCell.Value
    En essayant ton code c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(var_id_client).Activate
    J'obtiens l'erreur suivante :
    La méthode 'Range' de l'objet Global à échoué
    Sûrement parce que je déclare la variable comme integer.

    Ensuite pour la boucle , je viens de l'adapter à mon programme mais sa ne me donne pas les données recherchées..

  9. #9
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    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
    dim var_id_client As String
    Range("B" & 2 + Me.NcRecherche.ListIndex).Select
     
                                  UserForm_Nom_Client.Hide
     
                                 MsgBox "Nom de Client renseigné!"
     
     
               'Active la cellule décallée de 1 vers la gauche
     
               var_id_client = ActiveCell.Offset(0, -1).Value
     
                 'Enregistre la valeur de la cellule active dans la variable   VAR_ID_Equipment
    Essai comme ca...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Non sa ne marche pas..
    J'obtiens toujours cette erreur :

    La méthode 'Range' de l'objet Global à échoué

  11. #11
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Peux tu joindre un fichier ca sera plus simple

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Re ,

    Je l'ai joint dans mon 1er post.

    Voici..
    Fichiers attachés Fichiers attachés

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Re ,

    Je viens de trouver comment faire pour la boucle!

    Il me reste plus qu'à trouver comment sélectionner la cellule par rapport à une variable var_id_client.

  14. #14
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Voila ce que je peux faire de ce que je comprend, à toi d'adapter le traitement du résultat...
    Fichiers attachés Fichiers attachés

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Oui voilà c'est ça !!! Merci à toi pour le temps consacré.

    Il me reste plus qu'à trouver comment sélectionner une cellule via la variable..J'ai essayé plusieurs fois la méthode Range(variable).select mais sa ne marche pas.

  16. #16
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Je veux bien t'aider mais je ne comprend pas bien le fonctionnement de ton fichier...Si tu peux mieux détailler fonction finale...

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Je ne l'utilise plus dans mon code mais c'est seulement pour savoir comment faire parce que je me suis souvent retrouvé bloquer lorsqu'il fallait faire une sélection de cellule à partir d'une variable.

    Et bien pour être plus précis , imaginons j'ai une variable var_id qui est déclarée comme suit :

    cette variable est renseigné avec la ligne de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Range("B" & 2 + Me.NcRecherche.ListIndex).Select
     
                                  UserForm_Nom_Client.Hide
     
                                 MsgBox "Nom de Client renseigné!"
     
     
               'Active la cellule décallée de 1 vers la gauche
     
                ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Activate
     
                 'Enregistre la valeur de la cellule active dans la variable VAR_ID_Equipment
     
                   var_id = ActiveCell.Value
    Je voudrais donc sélectionner la cellule ou ce trouve les données qui sont enregistrer dans la variable var_id

  18. #18
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Mais cette variable viens d'un userform ou d'un liste directement sur la feuille?

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    Points : 18
    Points
    18
    Par défaut
    Ah désolé de ne pas avoir précisé , la variable vient d'une feuille 'table adresse' se trouvant en colonne A , et je souhaite la retrouver dans une feuille nommée 'table adresse contact' en colonne B.

  20. #20
    Membre actif Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Points : 259
    Points
    259
    Par défaut
    Ok c'est pour ca que ta variable ne marche pas...a ce moment là déclare ta variable que tu veux utilisé dans Range(variable) en variable Public.

    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim var_id as Integer
    Met ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public var_id as Integer
    Ainsi ta variable peux etre utilisé par tout les modules...

    Doc au final si je comprend bien tu veux que quand tu sélectionnes une cellule de 'table adresse' se trouvant en colonne A (ta valeur rechercher) tu retrouve la valeur et tous les éléments voisin de la feuille 'table adresse contact'.

    A ce moment la pourquoi ne pas créer une liste déroulante ou un formulaire de saisie de recherche...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [LDAP] Mots de passe active directory via php
    Par chtijule dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/08/2009, 10h54
  2. Réponses: 2
    Dernier message: 03/04/2007, 11h23
  3. Activer Cellule avec VBA
    Par jmarcB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2007, 16h43
  4. [PowerBuilder] Excel - Formatage de cellule via OLE
    Par moussmouss dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 17/07/2006, 16h11
  5. [Sécurité] Activation d'une variable globale
    Par Ricou13 dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 10h24

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