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 :

référence circulaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut référence circulaire
    Bonjour,

    J'ai un petit soucis avec les références circulaires :

    Imaginons un classeur, 2 feuilles :"F1" et "F2"
    Dans la cellule A1 de "F1", je mets "=f2!A1" et dans la cellule A1 de "f2", je mets "=f1!a1".
    Naturellement, ça me fait une référence circulaire.

    Dans mon projet, "F1" est le 'master' et "F2" le 'slave' : c'est à dire que lorsque je mets une donnée dans A1 de "F1", elle doit apparaitre dans la cellule A1 de "F2", mais si je ne mets rien dans "F1!A1", c'est "A1!F2" qui apparait

    Donc, comment éviter le 'conflit' = comment dire que "F1" est le master et "F2" le 'slave' ??

    Merci,
    A+

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Dans ton message, je ne vois pas en quoi cela se rapporte à VBA?

    Es-tu dans le bon forum?

    Si oui, peux-tu détailler, car je n'ai pas compris grand-chose?

    Si non, dis-le et je déplacerai ton message, et... peux-tu détailler, car je n'ai pas compris grand-chose?

    Merci.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    tu peux utiliser le paramètre de calcul itératif pour faire fonctionner la référence circulaire (à activer dans les options d'Excel)


    bonne soirée
    michel

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Bonsoir Pierre Fauconnier,

    En fait, je pense que c'est par code VBA que je peux dire que "F1" est master et "F2" est slave. C'est pourquoi je suis sur le forum VBA.
    Je joins une idée originale (pas de moi, fring est l'auteur de ce beau code humoriste), histoire de comprendre mon soucis, ça se trouve dans la cellule b2:c3. Je souhaiterais que lorsque je mets une donnée dans la cellule b2:c3 de "F1", ça s'inscrit dans "F2", mais que si rien n'est inscrit dans b2:c3 de "F1", c'est le b2:c3 de "F2" qui s'inscrit par défaut

    Je sais, pas toujours clair....mais je fais mon possible....

    Merci,
    A+

    Bonsoir SilkyRoad,

    J'avais déjà essayé cette soluce (j'aime bien galérer avant de demander de l'aide...), le soucis, c'est que c'est un planning, donc si j'utilise le mode itéatif (qui est et je te rejoins, la solution), si le collègue "change" d'avis en "F1", le lien ne se fait plus : si en b2:c3 de "F1" je tape 'coucou', le lien "=f2!b2:c3" est effacé, donc "F1" n'est plus le 'master' et je ne récupère plus le "F2!b2:c3"....c'est pourquoi je pensais passer par un code....

    Merci,
    A+
    Fichiers attachés Fichiers attachés

  5. #5
    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
    Bonsoir tlm,

    J'ai également un peu de mal à saisir la subtilité, à la base il n'y avait qu'un seul planning.

    On va essayer de démêler les noeuds...

    Donc, le nom que l'on va insérer dans une cellule du planning de la feuille 1, doit également s'insérer dans la cellule correspondante du planning de la feuille 2, jusque là c'est ok ?

    C'est après que ça se corse dans quelles circonstances peut-on insérer un nom dans le planning de la feuille 2 ? Uniquement si la cellule est vide et à ce moment là on renvoit le nom vers la cellule correspondante de la feuille 1 ?

    La feuille 1 peut modifier la feuille 2 mais pas l'inverse ? On peut malgré tout modifier la feuille 2 sans que la feuille 1 se modifie ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Bonjour Fring,

    Tu a tout compris, sauf "La feuille 1 peut modifier la feuille 2 mais pas l'inverse ? On peut malgré tout modifier la feuille 2 sans que la feuille 1 se modifie ? ".

    Je sais que j'ai du mal à m'exprimer (ça m'arrive tout le temps....)

    Donc le cas est le suivant :
    Ce que je recherche en fait : un planning de réservation de bureau (="F2") où chaque utilisateur peut réserver une plage à partir de son planning (="F1")

    4 utilisateurs, ayant chacun son planning. (="F1")
    ces 4 utilisateurs ont un planning commun (="F2") , planning du bureau.

    Donc, lorsque l'utilisateur ouvre son planning, le lien des cellules doit se faire (de F2 vers F1, pour voir si la case est en vert, donc libre), par contre, lorsque l'utilisateur se positionne sur une plage de son planning (=F1), cela impacte directement sur F2 et la case en F2 devient rouge, avec le nom de l'utilisateur)....


    Voilà, voilà, c'est pourquoi le système itératif de windows ne peut pas fonctionner dans mon cas (4 utilisateurs), et qu'il faut que je passe par VBA.

    Merci
    A+

  7. #7
    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
    Je continue dans mon investigation...
    si chaque utilisateur a son planning (en F1), quel intérêt de lui faire sélectionner une photo puisque c'est SON planning ?

    Les utilisateurs ne touchent pas au planning en F2, c'est juste un récapitulatif des 4 plannings ?

    Quand un utilisateur prend une case, elle reste en vert chez lui, cette case se met en rouch chez les autres (et ils n'ont plus accès à cette case) et cela complète le planning récapitulatif ?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fring,

    En fait tu auras compris que la couleur n'a pas grande importance, c'est juste un visuel pour voir si la plage est encore libre.

    question 1 : "si chaque utilisateur a son planning (en F1), quel intérêt de lui faire sélectionner une photo puisque c'est SON planning ?"
    Pour les photos, j'ai évolué dans ma réflexion : au début, je voulais partir du F2 et que chaque utilisateur clique sur sa photo pour se positionner sur le planning (comme tu me l'avais proposé, je réitère ce que je t'ai dit : trop génial !!!!), mais comme il y a 4 utilisateurs, si le 1er ouvre le classeur, le 2eme ou 3eme ou 4eme ne peut pas se positionner car le classeur est déjà ouvert, sans compter ceux qui restent toute la journée avec le classeur ouvert, donc impossible de modifier, d'où d'innombrables 'copie du classeur'.....c'est pourquoi je préférais que chaque utilisateur ait SON planning, qui alimente le planning F2. Par contre le système que tu as trouvé pour la photo est utilisable pour les activités, exemple de 8 à 10 je prends le bureau pour me la couler douce, de 10 à 12, pour aller voir mes collègues galériens sur developpez.com, 13-15h, je fais ma sieste, 15-17, je bosse. Enfin, tu vois ce que je veux dire...une activité....
    Question 2 : "Les utilisateurs ne touchent pas au planning en F2, c'est juste un récapitulatif des 4 plannings ?" oui, sauf que le F2 doit pouvoir "dire" si la plage est libre = vert
    Question 3 :"Quand un utilisateur prend une case, elle reste en vert chez lui, cette case se met en rouch chez les autres (et ils n'ont plus accès à cette case) et cela complète le planning récapitulatif ? " ça ça serait le top !!!! : c'est exactement ce que je cherche à obtenir :

    Je reconnais bien la solidarité de la "joe bar team"....

    Merci
    A+

  9. #9
    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
    Mais là...on aborde tout une autre problématique, comment aller modifier les classeurs déjà ouverts et en cours d'utilisation ? Là ça dépasse mes compétences

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    C'est clair que c'est un peu galère....Mais finalement, on est pas obligé d'ouvrir le classeur "F2" puisque ce n'est qu'une consultation.
    Il n'y a que "F1" qui doit être ouvert et en lecture/écriture...

    Merci
    A+

  11. #11
    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
    C'est justement là qu'est l'os puisque tu as 4 classeurs "F1" qui doivent mutuellement se renvoyer des informations et qu'ils peuvent être ouverts par les utilisateurs à n'importe quel moment voir même rester ouvert en permanence.

    J'ai croisé il y a quelques temps une conversation concernant le partage de fichiers, je vais essayer de remettre la main dessus.
    Mais il va falloir faire appel aux ténors parce que je ne maîtrise pas bien la manipulation de fichiers.

    Edit : m'étant déjà fait chambré parce que je prétendais que ce n'était pas possible j'ai fait quelques recherches et voici ci-dessous la procédure à suivre pour paramétrer et utiliser un classeur partagé.
    Pour créer un classeur partagé pouvant être utilisé simultanément par plusieurs personnes, effectuez la procédure suivante :

    Créez le classeur à partager. Étant donné que les feuilles de calcul de votre classeur seront utilisées par différentes personnes, veillez à mettre en forme le contenu de façon claire et concise. Vous pouvez également ajouter des commentaires de cellule comprenant des instructions et des conseils d'utilisation.

    Dans le menu Outils, cliquez sur Partage du classeur Excel. Lorsque la boîte de dialogue correspondante s'affiche, cliquez sur l'onglet Modification. La boîte de dialogue présentée à la page suivante s'affiche.

    Activez la case à cocher Modification autorisée pour définir le classeur en tant que classeur partagé, puis cliquez sur OK. Une boîte de dialogue s'affiche et vous demande si vous souhaitez enregistrer votre classeur (condition requise si le classeur doit être partagé).

    Cliquez sur OK pour enregistrer le classeur. La mention « Partagé » s'affiche alors entre parenthèses dans la barre de titre, indiquant que vous modifiez désormais un classeur multi-utilisateur ou partagé. Tant que la case à cocher Modification autorisée est activée sous l'onglet Modification, vous ne pouvez ni enregistrer de formules dans le classeur ni modifier la mise en forme des cellules.

    Attention :

    Pour que le classeur partagé fonctionne correctement, vos collègues de travail doivent ouvrir la même copie du classeur partagé à partir d'un dossier réseau partagé, et non des copies distinctes à partir de leur disque dur personnel. Les utilisateurs savent que le classeur est partagé si la mention « Partagé » s'affiche dans la barre de titre lorsqu'il est ouvert dans Excel.

    Utilisez l'explorateur Windows pour copier le classeur partagé vers un dossier partagé sur votre réseau, puis informez vos collègues qu'ils peuvent utiliser le fichier. À partir de cet instant, dès qu'un utilisateur enregistre des modifications dans le classeur partagé, celles-ci sont copiées dans la liste partagée et les modifications effectuées par les autres utilisateurs sont également téléchargées dans leur système. Excel traite et répartit les révisions automatiquement
    On se base sur ce principe pour les 4 classeurs "F1"

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Ok Fring,
    Je te remercie, je vais essayer ce soir différentes choses.....suite au prochain épisode.....De toutes manières, je dois trouver la solution et ne manquerai pas de te tenir informé de mes "trouvailles"....donc, à demain...

    Merci
    A+

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Hello,

    Au boulot, j'ai une version très bridée de XP, et ne permet pas le partage de fichier excel....c'est pourquoi je voulais passer par une VBA. Le fonctionnement doit être exacteent celui que tu m'as décrit.

    Mais bon, à force de chercher, je ne trouve pas, je pense que je vais importer F2 à l'ouverture de F1, faire les modifs lorsque je suis sur F1 et lorsqu'elles sont finies, envoyer et enregistrer sous F2, j'envoie le code dès que j'ai fini, à moins que quelqu'un ait une autre solution....

    Merci
    A+

  14. #14
    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
    Mais...VBA et le partage de fichiers sont deux choses complémentaires, comme je l'ai dit plus haut, ce n'est pas "F2" qui pose problème mais les 4 fichiers "F1" puisque chaque fois qu'un fichier est modifié, les autres doivent se mettre à jour. Si les autres sont en cours d'utilisation tu vas faire comment pour les mettre à jour si ils ne sont pas en mode "partagé" ?

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Hello Fring,

    C'est clair que c'est là tout le fondement du problème : la mise à jour.
    Je ne peux pas les mettre en "partagé", c'est pour ça que je demandais de l'aide....ou du moins, une orientation, une idée.
    Actuellement, je suis sur la piste du fichier "F2" qui serait vérouillé : lorsque l'utilisateur ouvre son "F1", ça ouvre "F2", donc bloque toute modification, si un autre utilisateur veut mettre à jour son "F1", il doit attendre que le premier utilisateur ait fini....un peu lourd, un peu contraignant, mais pour l'instant, je ne vois pas d'autres solutions....

    Merci,
    A+

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Finalement, j'ai complètement revu mon processus :

    Je me suis inspiré de Silkyroad et de ses conseils sur la création de liste de choix.
    Donc, plutôt que de faire un fichier F1 et F2 et de les mettre en relation, j'ai tout mis sur le même classeur, créé plusieurs listes de choix, et ça fonctionne : pas de problèmes de mises à jour, de mauvaise saisie, le bonheur quoi...Donc, à la base, j'ai voulu faire trop compliqué (=VBA), alors qu'une solution toute simple existe....

    Merci
    A+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/06/2006, 17h02
  2. [SQL 2K5] Pb : ON DELETE CASCADE : référence circulaire
    Par n00bi dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 29/05/2006, 08h48
  3. Référence circulaire
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 27/04/2006, 14h38
  4. [EXCEL] : référence circulaire à cause d'une macro
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/01/2006, 10h41
  5. [DEB] DBdesigner 4 et référence circulaire
    Par Ranbaz dans le forum DBDesigner
    Réponses: 1
    Dernier message: 13/07/2005, 17h32

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