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 :

affecter une valeur de cellule à une variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 15
    Points
    15
    Par défaut affecter une valeur de cellule à une variable
    Bonjour.
    je tiens déjà à vous dire que je ne suis pas un pro de VBA. Je développe mes programmes sur Excel pour mon boulot grâce aux enregistrements du menu macro puis je me risque à les modifier quelque peu par VBA.
    Voilà mon problème:
    J'effectue une recherche avec "match" dans une colonne de base de données pour obtenir le N° de ligne (jusque là tout va bien) et je voudrais l'affecter à une variable pour désigner une cellule sur cette même ligne pour pouvoir y copier la valeur d'une autre cellule. Et là tout va mal.
    Si quelqu'un pouvait m'aider, ce serait génial.
    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    Tu pourrais expliquer ton problème ? Match est une formule Excel anglais, pas du VBA (EQUIV, je crois).
    Au lieu de dire ce que tu fais et que tu ne maîtrises pas, si tu expliquais ce que tu veux faire ?
    Plus tu vas être précis, plus compréhensible sera le code qu'on te fournira, puisque tu pourras retrouver tes données.
    A+

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    A priori, pour ce que tu en dit, tu cherche une cellule et tu arrive a en déduire la ligne. donc tu aurais deux solutions. la premiere, tu utilise ce n° de ligne pour acceder a ta cellule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    variable = macelluletrouvé.row
    cells(variable,x).value = mavaleur (x est le n° de colonne de cette cellule)
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    macelulletrouvé.offset(x,0) = mavaleur (x est le decalage horizontale pâr rapport a la cellule que tu as trouvé avec match)
    cependant, comme dit gorfael avec justesse, plus ta question sera précise, plus la réponse pourra l'etre. et comme tu peux constater avec les deux solutions que je te propose, il y a un cas ou le fait d'avoir trouvé la ligne ne te sert a rien. si tu nage, ne part part de la façon que tu veux faire, mais du résultat que tu veux obtenir, en fonction de ce que tu as. ou du moins, expose au moins ça, et expose le point ou tu en es, ça aide bien.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Bon, désolé. Je vais m'appliquer et essayer d'être plus clair.
    Je travaille sur une base de donnée d'un millier de lignes environ et une trentaine de colonnes.
    Mon classeur possède trois feuilles.
    Sur la première, ma base de données. La deuxième sert de feuille de travail à mes macros et la troisième de résultat. J'efface le contenu de ces deux dernières à chaque lancement de mes macros.
    Je travaille avec une dizaine de macros.
    Sur la feuille résultat de l'une d'elles, je voudrais copier une cellule pour aller mettre à jour une cellule de ma base de données.
    Cette cellule fait partie d'une ligne sur la base de données dont le contenu de certaines cellules est figé.
    Je fais donc une recherche du numéro de ligne dans la première colonne de ma base de données (champs désignation).

    Voilà ma procédure par excell:
    macro - nouvelle macro
    je sélectionne une cellule dans ma page résultat et utilise la fonction 'equiv' pour trouver le n° de ligne dans la colonne 'désignation' de la base de données.
    S'inscrit donc dans cette cellule le numéro de ligne qui est bien en format nombre.
    j'arrête l'enregistrement de la macro.

    macro-macro-modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim a As Integer
        Range("A1").Select
            ActiveCell.FormulaR1C1 = "=MATCH(""CAISSE CELLULE N°1"",'base de données'!C,0)
    C'est pourquoi je parlais de l'instruction "match" car maintenant on est bien en VBA.
    je veux maintenant affecter le résultat de cette fonction à la variable a.
    Puis utiliser l'instruction :
    pour y mettre à jour le contenu.

    C'est l'affectation du résultat de cette fonction à la variable a que je n'arrive pas à faire.

    J'espère que j'ai été plus clair. En tous cas merci de vous être penchés sur mon problème.
    Je vais maintenant essayer de me pencher sur les propositions de alsimbad.

  5. #5
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour, si j'ai bien compris il faut écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a = [A1] 'ou a = ['Feuil1'!A1] remplace 'Feuil1' par le bon nom d'onglet
    Cells(a,10).select
    cordialement
    fred65200

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    a=Activecell.value

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    bon, je te propose un bout de code qui devrais te simplifier la vie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim Scherche As String
    Dim a As String
    Sub trouve()
    Scherche = InputBox("désignation")
    '''ou Scherche = selection.value si tu prefere continuer avec ta façon
    With Worksheets(1).Range("a1:a1000")
    Set a = .Find(Scherche, LookIn:=xlValues)
    MsgBox a.Offset(0, 10).Value
    a.Offset(0, 10).Select
    ''en réalité ces deux derniere lignes ne servent a rien qu'a t'indiquer que tu es au bon endroit. c'est la ligne du dessus qui affecte une valeur la a
    End With
    End Sub
    bon week end

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci pour tout.
    Les solutions de Maxence et Fred fonctionnent.
    Merci aussi Alsimbad, je ne suis pas aller plus loin mais j'ai appris une astuce de plus.
    C'est super.
    Merci encore de votre dévouement.

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

Discussions similaires

  1. [XL-2013] Recopier dans une cellule une valeur affichée dans une autre fenêtre Windows.
    Par Atalys_ST dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/10/2014, 15h12
  2. [XL-2007] recherche d'une valeur texte dans une plage de cellules
    Par blackstrange dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 13/07/2012, 16h26
  3. [Toutes versions] Rechercher une valeur max dans une plage de cellules variable
    Par Laur3nt62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2011, 19h34
  4. Parmi 3 cellules, une seule peut avoir une valeur différente de 0.
    Par EricQ dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 07/07/2008, 15h46
  5. Lancer une macro à partir d'une valeur de cellule
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2008, 10h03

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