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 :

Déplacement de données et MàJ de références [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
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut Déplacement de données et MàJ de références
    Bonjour tout le monde !

    Mon fichier excel à trois feuilles :
    - Source
    - Blacklist
    - Traitement

    J'importe mes données dans la feuille Source (avec un script VBA)
    La feuille Traitement récupère ces données par référence pour effectuer les calculs. J'ai donc des références du style " ='Source'!C3 " dans ma feuille Traitement

    L'import étant automatique, je souhaite parfois blacklister certaines données. J'ai donc un bouton a coté de chaque ligne de Source qui coupe-colle la ligne dans la feuille Blacklist, et remonte les suivantes pour pas laisser de trou dans Source. Quand une donnée est dans Blacklist, j'ai un bouton pour la restaurer, en la coupant-collant dans Source.

    Tout ça fonctionne, un peu trop bien même :
    Quand je blackliste une donnée, la case qui la récupérait dans ma feuille Traitement s'adapte, et devient " ='Blacklist'!C3 ". Comportement très intelligent je l'accorde, mais du coup pas hyper utile !

    Est ce que quelqu'un connait un moyen d'empêcher cette mise à jour de Traitement, qui doit rester sur " ='Source'!C3 " ?

    J'ai pas mal cherché sur google, mais les questions pose sur le déplacement des références elle-mêmes, et non le déplacement des données référencées

    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ne fais pas un copier / coller pour cette cellule mais écris la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Traitement").[C3].formula1="=Source!C3"
    en remplaçant "C3" par une variable.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut
    Je me suis peut-être mal expliqué, ou je comprends pas la réponse :
    A aucun moment mon VB ne touche à la feuille traitement.
    Ce que tu suggères c'est de re-générer traitement à chaque blacklisting ?

    En gros mes données sont en lignes, je blackliste une ligne entière, et traitement récupère certaines cases et fait les traitements pour chaque ligne, sachant que j'ai un nombre variable de lignes.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    A aucun moment mon VB ne touche à la feuille traitement.
    C'est peut-être le problème ? Est-ce que tu peux mettre un classeur exemple - sans données confidentielles - en PJ ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Par défaut
    En pj un fichier de test.
    La feuille source contient les données saisies par l'utilisateur. La croix à coté de chaque ligne permet de la blacklister (le bouton R permet de régénérer automatiquement les croix)
    La feuille blacklist est vide
    La feuille traitement récupère des données dans source et effectue des calculs (des traitements quoi )

    Regarde le contenu de traitement!B3 : "=Source!C2"
    Le contenu est "bbbbbbbb"

    Je blackliste la ligne 2 de source (en cliquant sur le bouton en A2). La ligne est copié dans la feuille blacklist et supprimée de la source. Les autres lignes remontent pour avoir un tableau sans trou qui commence à la ligne 2.

    Au niveau de la feuille traitement, la case B3:
    Le comportement attendu :
    Elle contient toujours "=Source!C2", son affichage est donc "cccccccccc" : la ligne 3 qui est remontée lors du blacklisting.

    Le comportement réel :
    Elle contient "=Blacklist!C2", donc son affichage est toujours "bbbbbbbb", elle référence le contenu et non le contenant !

    De même, si je restaure la ligne supprimée (bouton Blacklist!A2) elle vient se placer à la fin de la source, et ma case Traitement!B3 contient maintenant "=Source!C19"

    Moi je veux que Traitement!B3 contienne TOUJOURS "=Source!C2", et je veux pouvoir la tirer vers le bas pour que Traitement!B158 contienne TOUJOURS Source!C157

    Y a t'il un moyen de verrouiller la référence sur le contenant et non le contenu, sans avoir à refaire le tableau traitement à chaque fois ?
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Quand tu fais un couper / coller, les cellules qui pointent sur la cellule continuent à pointer dessus. D'où "=SourceC2" devient "=Blacklist!B2" afin d'afficher toujours la même valeur. De même, quand tu restaures la cellule en C19 de Source. Pour contourner, essaye de mettre en B3 de Traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("Source!"&ADRESSE(LIGNE()-1;COLONNE()+1))
    à recopier vers le bas et la droite.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/09/2007, 17h47
  2. Supprimer une donnée et toutes ses références
    Par calagan99 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/06/2007, 15h41
  3. Déplacement de données
    Par thierrybatlle dans le forum Access
    Réponses: 7
    Dernier message: 20/03/2007, 15h42
  4. Déplacement de donné
    Par dirthangel dans le forum Langage
    Réponses: 13
    Dernier message: 29/07/2005, 03h04
  5. Déplacement de données mais dans scalaire
    Par siaoly dans le forum Langage
    Réponses: 1
    Dernier message: 27/07/2005, 00h30

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