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 :

Rendre dynamique la référence à des cellules dans VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juin 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2013
    Messages : 13
    Par défaut Rendre dynamique la référence à des cellules dans VBA
    Bonjour à tous,

    Je me trouve souvent confronté à ce "petit" problème :
    Lorsqu'on utilise des cellules dans les formules et qu'on supprime (ou insère) des lignes et des colonnes dans la feuille, les cellules sont adaptées à la nouvelle configuration.

    Par contre, dans le code VBA les cellules ne sont pas modifiées, bien sûr.
    Exemple : Range("F7").Value = 0

    Quel code me conseilleriez-vous pour résoudre ce problème ?

    Merci d'avance,

    Michel

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(i,j)
    Range("A" & i)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    J'ai été confronté au même problème que toi. J'ai regardé partout et je n'ai rien trouvé la dessus. C'est étonnant. En tout cas, cette question m'intéresse aussi.


    Citation Envoyé par EngueEngue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(i,j)
    Range("A" & i)
    Enfaite, dans Excel, lorsque l'on fait référence à une cellule, ici la formule est en B5 par exemple:
    Et que l'on coupe la cellule A1, puis qu'on l'a colle en D3, la formule situé en B5 a changé dynamiquement, et devient devient donc ici:
    La formule en cellule B5 est passé dans cette exemple de:
    à
    En VBA, la mise à jour des cellules ne se fait pas automatiquement.

    *************************************************************************

    En attendant de trouver une vrai solution, je propose de faire de plage de cellule dans Excel.
    Une 1ère qui peut être dynamique, et une seconde qui est fixe et qui fait référence à la 1ère plage.
    En gros, dans le VBA, tu fait référence au cellules de ta 2ème plage Excel. Et cette 2ème plage fait référence à la 1ère plage dans Excel, exemple:

    En D1, la cellule représente A1:
    Si tu déplace A1 en A2, tu as en D1
    Et en code VBA, tu as donc:
    et non
    Dernière modification par AlainTech ; 12/07/2013 à 01h49. Motif: Suppression de la citation inutile

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux obtenir un effet équivalent en définissant un nom pour ta cellule.
    Exemple :
    tu définis le nom "MaValeur" qui fait référence à =Feuil1!$F$7
    Le code VBA continuera à associer la valeur après suppression ou insertion de lignes ou de colonnes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("MaValeur").Value = 0
    Cordialement.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci,

    C'est effectivement une bonne solution de type "indirecte". Après réflexion, je me dit qu'il ne doit pas exister de solution en VBA. Ca obligerai le VBA a modifier/éditer le texte à notre place lorsqu'une cellule change de place, et je ne pense pas que ça serait appréciable finalement surtout qu'en VBA, il y a plusieurs manière de faire référence à une cellule.

    Donc, je pense enfaite qu'il n'ai pas possible de modifier dynamiquement le code VBA qui fait référence à une cellule ou plage de cellule et les références nommées et même structurées sont très certainement les seules vraies solutions en code VBA. C'est une manière indirecte, mais ça semble être la seule solution.

    Maintenant, je suis convaincu qu'on ne peut pas avoir de modife VBA dynamique à cause de ce qu'y a été dit plus haut.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juin 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2013
    Messages : 13
    Par défaut
    Bonjour à tous,

    J'ai essayé cette solution, qui résout la suppression (ou l'ajout) de colonnes :
    [Col_F].Cells(87, 1) = 0 où Col_F est le nom que j'ai donné à toute la colonne F
    Par contre, je bugge sur la suppression de lignes, et dans tous les cas, cette solution ne fonctionne pas pour les déplacements de cellules.
    La solution consistant à donner un nom à toutes les cellules qui apparaissent dans mon VBA me semble donc être la meilleure.

    Je vous remercie tous de m'avoir éclairé sur ce sujet.

    Michel

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/02/2014, 12h09
  2. Fusionner des cellules dans un tableau dynamique
    Par Arthis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 29/07/2010, 11h12
  3. Réponses: 3
    Dernier message: 30/09/2008, 11h28
  4. mettre des n° dans des cellules avec VBA
    Par naitgo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2007, 20h48
  5. [VBA-E]recopier des cellules dans un fichier
    Par Lex O'Mil dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/04/2007, 21h01

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