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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    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 expérimenté
    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
    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 averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  4. #4
    Membre expérimenté 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
    Par défaut
    Une boucle For serais plus simple de x à nombre de 22 trouvé...

  5. #5
    Membre expérimenté
    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
    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 averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 61
    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 expérimenté 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
    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...

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

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