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 :

vba : comment renvoyer le n° de colonne correspondant à la cellule active ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut vba : comment renvoyer le n° de colonne correspondant à la cellule active ?
    Bonjour,

    Je m'explique :

    Je voudrais exécuter du code vba si la cellule dont la valeur vient d'être modifiée se trouve seulement dans une colonne et pas dans les autres...

    Dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if mysheet.col = 3 then
    (...)
    endif
    J'ai pas mal cherché dans le forum et la faq vba / excel mais rien dans ce sens...

    J'ai fait du vb6 il y a longtemps, j'ai pas mal oublié et je redémarre en vba...

    J'ai le code qui marche mais actuellement quelle que soit la colonne et ça je veux éviter...

    Merci.

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    en utilisant l'interruption worksheet_change, tu as un paramette qui passe en meme temps : Target c'est un objet range, qui est la cellule ayant fait l'objet de la modification

    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if target.column = 3 then 
    .
    .
    .
    .
    end if

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    Merci Wil. C'est tout à fait ce que je cherchais...

    Avant mon code marchait sur l'évènement selection_change et pas sur worksheet_change et j'ai trouvé pq mais maintenant, le pb est que le code est déclenché par la validation de la cellule en cours et comme la sélection passe à droite après validation, la valeur de la cellule précédente traitée par mon code est entrée dans la cellule à sa droite...

    Donc, je voudrais un truc qui permette de pouvoir entrer le résultat du code dans la cellule voisine de gauche de la cellule qui a obtenu le focus visuel, sans toucher à ce focus... Suis pas sûr d'être assez clair...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu es très clair mais ce n'est pas le principe à adopter. Selon le mode de saisie, quand tu valides une ligne, tu peux passer à la cellule voisine, à droite ou en dessous...
    Je déclarerais une variable Adres en Public dans la feuille de code, à laquelle j'affecterais l'adresse de Target dans Worksheet_SelectionChange et placerais ton code dans Worksheet_Change.
    pour éclairer cette méthode, teste ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Adres
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox Range(Adres).Value
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Adres = Target.Address
    End Sub
    Après, tu adaptes
    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    Super... ça marche !

    Merci.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Décembre 2007
    Messages : 7
    Par défaut
    Bon... j'avais déjà mis le tag résolu mais comme j'ai encore une question concernant la navigation dans les colonnes, je l'ai enlevé pour regrouper ce genre de questions, ça peut être utile pour les autres...

    Comment faire si je suis en colonne 5 et que je veux, après validation un retour en colonne un et à la ligne suivante ?

    ... une piste ? ...un bout de code ?

    Merci.

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

Discussions similaires

  1. [XL-2010] VBA comment écrire : colonne contient une valeur
    Par renartichaud dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/07/2014, 11h36
  2. Réponses: 2
    Dernier message: 24/04/2014, 10h39
  3. [XL-2007] N° de ligne et N° de colonne d'une cellule active
    Par phiiris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/10/2010, 20h38
  4. Réponses: 8
    Dernier message: 09/05/2007, 17h00
  5. Réponses: 8
    Dernier message: 14/03/2005, 21h43

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