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 :

enregistrer l'adresse d'une cellule


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
    Mai 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Par défaut enregistrer l'adresse d'une cellule
    Bonsoir a tous,

    j'aimerai pouvoir conserver (sous la variable locate dans mon prog) l'adresse d'une cellule sous excel pour la rappeler ultérieurement dans le programme. J'ai surligne en rouge ce que je pense être les sources du problème
    voila ce que j'ai fait:

    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
        Dim myselect As Range
        Dim mycell As Range
        Dim cell As Range
        Dim newstructure As String
        Dim existingstructure As String
        Dim count As Integer
        Dim locate As Range
    
    private Sub CommandButton1_Click()
    
        'check for similar compound
    newstructure = Sheets("Inventory").Cells(1, 100).Value
    existingstructure = Sheets("Inventory").Range("F3").Value
    
    strtcompare:
    
    Select Case existingstructure
        Case Is = newstructure
            MsgBox ("this structure already exists")
            GoTo passregistration
        Case Is = ""
            Set mycell = ActiveCell
            locate = (mycell.Address)
            Sheets("Inventory").Cells(1, 100).Select
            axlcopychemistry Application.Selection
            ActiveCell.locate.Select
            ActiveCell.Offset(0, -5).Select
            axlpastechemistry Application.Selection
        Case Else
            ActiveCell.Offset(1, 0).Select
            existingstructure = ActiveCell.Value
            GoTo strtcompare
    End Select
    
    passregistration:
        Cells(1, 100).Delete
        UserForm1.Hide
    
    End Sub
    Lorsque je debugge c'est la ligne "locate = (mycell.Address)" qui pose probleme. J'ai essaye d'autres syntaxes du genre " " ou (" "), mais rien y fait.

    Si ça n'est pas suffisamment clair n'hésitez pas a demander plus de renseignements.

    Merci de votre aide.

    Fred.

  2. #2
    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,

    Tu peux te passer de la variable "Locate", elle fait double emploi vu que tu as déjà toutes les infos concernant la cellule dans la variable "mycell"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Case Is = ""
            Set mycell = ActiveCell
            Sheets("Inventory").Cells(1, 100).Select
            axlcopychemistry Application.Selection
            mycell.Offset(0, -5).Select
            axlpastechemistry Application.Selection
    Attention, sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Inventory").Cells(1, 100).Select
    Si la feuille "Inventory" n'est pas la feuille active, ça va coincer...!
    On ne peut sélectionner une cellule que sur une feuille active, il faut donc décomposer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Inventory").Select
    Cells(1, 100).Select
    Pour info, dans 99,99% des cas on peut très bien se passer des "Select", par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("MaFeuille").Select
    Range("A1").Select
    ActiveCell.Value = "toto"
    peut (pour ne pas dire doit...) s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Range("A1").Value = "toto"
    ce qui rend la procédure plus fluide, les "Select" ne font qu'allourdir la procédure et transformer ton écran en guirlande de Noel.
    Dans la mesure du possible il faut éviter les ActiveSheet, ActiveCell et ActiveMachin en tout genre qui tôt ou tard engendreront un couac parce que ça ne sera pas la bonne feuille ou pas la bonne cellule qui sera active.

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Par défaut enregistrer l'adresse d'une cellule
    Merci beaucoup Fring,
    Ca a resolu mon probleme. et merci aussi pour le complement d'info.
    Bonne journee.

    Fred.

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

Discussions similaires

  1. Décomposer le contenu (une adresse) d'une cellule en 2 ou 3 cellules
    Par cocoboss dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/10/2007, 17h47
  2. Réponses: 4
    Dernier message: 03/10/2007, 17h57
  3. Réponses: 4
    Dernier message: 11/09/2006, 08h29
  4. [VBA-Exel] Adresse d'une cellule fusionnée
    Par gloll dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 03/08/2006, 09h25
  5. [VBA-E]récupérer l'adresse d'une cellule
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2006, 19h29

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