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 :

valeur d'une case


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut valeur d'une case
    Bonjour à tous,

    J'ai actuellement dans la case I16 la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Lpfa Commerce";AnalyseF3!$J$3:$T$3;0);FAUX)
    Ce qui me permet de retourner une valeur comprise dans un tableau de la feuille AnalyseF3.

    Cependant je dois ajouter à cette valeur, la valeur de la case J22.

    Si je fais ça par macro, alors j'aurai bien mon addition de faite MAIS la formule de recherche sera effacée!

    Comment puis-je faire ?
    Est-ce que je peux faire le calcul à la suite de la recherche ? si oui comment l'écrire ?

    Merci par avance!
    Aud- [débutante]

  2. #2
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Toujours là,

    Juste pour info as-tu essayé la solution suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Lpfa Commerce";AnalyseF3!$J$3:$T$3;0);FAUX)+J22

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Comme tu peux le voir gégé c'est donc la suite de mon problème de tout à l'heure et tu as encore trouvé une réponse toute simple à laquelle je n'avais pas pensé (j'étais encore repartie dans mes macros!lol).

    En effet ça fonctionne nikel! lol merci!!
    Va falloir que j'arrête de penser aux macros systématiquement!lol

    PS: il va y avoir un troisième épisode de mon problème alors si ça te dit... lol

  4. #4
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut OK
    Envoie je suis près

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut 3ème épisode
    Je vais donc mettre le 3ème épisode à la suite...

    Maintenant que le calcul se fait correctement à savoir que I16 s'additionne bien avec J22, j'aimerai copier-coller cette nouvelle valeur dans une autre feuille "Feuil1" dans la case C15.

    Voici la macro qu'il y a derrière ( encore une macro lol) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ThisWorkbook.Worksheets("Synthese").Range("I16").Copy
    ThisWorkbook.Worksheets("Feuil1").Range("C15").PasteSpecial (xlPasteAll)
    Le problème est qu'au lieu de me retourner I16+J22, il me retourne seulement I16!
    Pourquoi ? comment faire pour qu'il me renvoie I16+J22 ?

  6. #6
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    On est reparti sur un truc tout bête:

    Et si tu copiais la formule de la cellule I16
    dans la cellule 'Feuille1'!C15

    tout simplement

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    j'ai oublié de préciser que l'affichage ne se fait que lors d'un appuis sur un bouton de commande. Donc cette fois c'est obligé de passer par un code dans un module...

  8. #8
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Pas de problème,
    il suffit d'intégrer l'opération dans le code du bouton de commande.
    Dans ton code précédent, tu utilises la fonction Paste.

    En faisant ça tu copies toute lea cellule, y compris la mise en forme...

    En simplifiant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("Feuil1").Range("C15")=Worksheets("Synthese").Range("I16")
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Range("Feuil1!C15")=Range("Synthese!I16")
    Attention: ne pas oublier le point d'exclamation après le nom de la feuille
    Si le nom de la feuille comporte un espace, encadrer le nom de la feuille par des apostrophes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("'Feuil1'!C15")=Range("'Synthese'!I16")

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    oui c'est cool pour les simplifications mais en fait (encore une fois, ici j'ai simplifier le problème) je renvoie un big tableau avec des bordures, des couleurs de cases et des commentaires donc je suis obligée de faire le xlPasteAll

    donc toi si je comprends bien, tu n'utilises pas de fonction copier-coller ?

  10. #10
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Bien, Reprenons l'énoncé du problème:

    Tu copies tout une plage de données ou seulement une cellule?

    Si tu copies tout une plage de données, mais que seule une cellule pose problème, Les codes mentionnés dernièrement permettraient de résoudre le problème, en n'ajoutant qu'une seule ligne de code.

    Au 3èmè épisode, tu mentionnes une feuille nommée "Feuill1" faut-il en conclure que tu crées une nouvelle feuille à chaque fois, ou les données sont-elles copiées dans une feuille existante?

    Si c'est le deuxième cas, il serait peut-être plus simple de lier les deux cellules tout simplement.

    A toi

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Alors je vais repréciser les choses :
    Feuil1 existe déja.
    Le vrai code du tableau à copier est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ThisWorkbook.Worksheets("Synthese").Range("A14:F19").Copy
    ThisWorkbook.Worksheets("Feuil1").Range("B13:G18").PasteSpecial (xlPasteAll)
    Les cellules qui vont me poser des problèmes sont celles ou je fais un calcul donc :
    I16 car le calcul est I16+J22
    K16 car le calcul est K16+L22
    M16 car le calcul est M16+N22

    Pour avoir un visuel :
    Voici donc le bon tableau avec les calculs (dans la feuille Synthèse) :



    Et voici malheureusement le tableau qui m'est renvoyé (dans la feuille Feuil1) :



    On voit que le tableau qui m'est retourné ne prend pas en compte les calculs qui ont été fait (ici on avait 80+3=83)

    PS: désolée pour le floutage mais je n'ai pas le droit d'en montrer d'avantage...

  12. #12
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Les liens ne sont pas passés, mais ce n'est pas important.

    Si seules 3 cellules posent problème, la solution ne devrait pas être loin.

    Tout d'abord, si la feuille1 existe déjà, pourquoi ne pas la nommer?

    Pourquoi ne pas réaliser un copier/coller (manuel) de la plage
    Synthèse!A14:F19 dans la plage Feuil1!B13:G18

    Puis enregistrer les formules de liaison avec la feuille Synthèse dans les cellules de la feuille Feuil1.

    Pour résumer, je ne comprend pas la nécessité de copier toutes les propriétés des cellules à chaque action sur le bouton de commande.

    Si cette copie est indispensable, mais que les données ne suivent pas, dans ce cas, autant doubler la commande de copie par un copie des formules en utilisant la propriété FormulaLocal des cellules de destination.

    Ca nécessitera trois lignes de code supplémentaire.

  13. #13
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Je viens de voir les images.

    Apparemmnent, la mise en forme est faite, il suffit donc de lier les deux plages de données pour obtenir une recopie du tableau initial.

    quel est la plus value du bouton de commande?

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    La plus value? c'est à dire le code?

    c'est ce que je donnais tout à l'heure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ThisWorkbook.Worksheets("Synthese").Range("A14:F19").Copy
    ThisWorkbook.Worksheets("Feuil1").Range("B13:G18").PasteSpecial (xlPasteAll)
    qui se trouve dans un module appelé "Affichage"

    JE ne comprends pas [...] à chaque action sur le bouton commande
    Je n'appuie qu'une seule fois sur le bouton commande pour qu'il me copie le tableau en entier

    A mon avis, il faut le forcer à bien prendre en compte les calculs effectués et non pas seulement renvoyer la valeur initiale.

    Comment lui dire ceci? quelle serait ta solution avec "Formula..." stp?
    on va y arriver

  15. #15
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Quand je dis que je ne comprend pas, je pense qu'il y a confusion entre deux choses:

    Copier un tableau en entier:
    Où est la nécessité de copier la "mise en forme" d'un tableau qui existe déjà?

    Copier les données d'un tableau:
    Je dirais que si les deux tableaux sont identiques, il suffit de créer un lien entre les cellules correspondantes.

    Je me suis lancé dans une petite simulation et OH! Miracle, j'ai peut-être la réponse à ce que l'on cherche.

    Vérifies que dans ton tableau source (dans la feuille de calcul Synthèse) les références soient bien notées en absolu et non en relatif.

    En effet, lors de la copie, la position initiale étant différente, la position relative l'est également.

    La position absolue de la cellule J16 est: $J$16

    Positionne le signe $ dans les références du tableau source.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    rolalala ça marche toujours pas...
    en tout cas merci de me suivre, c'est vraiment super cool de ta part!

    Alors je vais essayer de répondre à toutes tes questions :
    1. Pourquoi copier la mise en forme du tableau :
    Parce que dans Feuil1 je peux choisir plusieurs formats de tableaux différents (avec plus ou moins de cases et de colonnes). Il y a donc un clear à chaque fois que l'on change de format de tableau. Mais ceci importe peu sur mon problème actuel

    2. Pourquoi copier les mêmes valeurs :
    Ces valeurs diffèrent suivant les caractéristiques que je donne dans Feuil1
    (c'est une macro qui va me chercher les bonnes valeurs dans une 3ème feuille "AnalyseF3")

    3. Concernant les chemins relatifs et absolus :
    J'ai donc cette fois mis le code suivant dans mon module "Affichage" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.Worksheets("Synthese").Range("$H$14:$O$20").Copy
    ThisWorkbook.Worksheets("Feuil1").Range("$B$13:$I$19").PasteSpecial (xlPasteAll)
    avec des "$" partout comme tu m'as dit mais ça ne marche toujours pas :s

    c'est terrible ce truc!lol
    surtout que je suis sûre qu'on est tout proche de la solution!

  17. #17
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Ce n'est pas dans la macro que les $ sont imortant, mais dans les cellules de la feuille Synthèse.

    On va y arriver

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    oui mais voila ce qu'il y a actuellement dans les cellules du tableau dans la feuille Synthèse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Lpfa Commerce";AnalyseF3!$J$3:$T$3;0);FAUX)+$J$22
    Il y a déjà des $ partout...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    oh! j'ai trouvé!!
    je teste et j'explique apres!!

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Alors voila le mystère est résolu!!

    Avant j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Lpfa Commerce";AnalyseF3!$J$3:$T$3;0);FAUX)+$J$22
    Mais en fait, il allait me chercher la valeur de la case J22 de la feuille "Feuil1" au lieu de prendre la valeur de la case J22 de la feuille "Synthèse"!

    Du coup, si je tape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =RECHERCHEV(1;AnalyseF3!$J$35:$T$154;EQUIV("Lpfa Commerce";AnalyseF3!$J$3:$T$3;0);FAUX)+Synthese!$J$22
    C'est fois si c'est bon!!

    Rolala passer quasi l'aprem sur un petit truc comme ça... c'est quand même tordu l'informatique!lol
    En tout cas merci beaucoup pour ta précieuse aide! franchement c'est super ce que tu as fait

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. attribuer une valeur numérique à une case à cocher
    Par qtipse dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/11/2007, 13h19
  2. Changer la valeur d'une case à cocher
    Par Naksh-i dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/10/2006, 12h57
  3. Réponses: 1
    Dernier message: 23/09/2006, 14h12
  4. [excel]Valeur d'une case ayant une formule
    Par snooopy007 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/07/2006, 17h57
  5. Réponses: 4
    Dernier message: 21/07/2006, 17h43

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