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

WinDev Discussion :

[WD10] Copier une cellule d'une table


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut [WD10] Copier une cellule d'une table
    Bonjour,

    J'aimerais pouvoir copier (dans le presse papier) le contenu d'une cellule d'une table sans que celui-ci puisse être modifié ou supprimer.
    Est-il possible d'interdire la saisie dans une cellule mais de pouvoir sélectionner (et donc copier) son contenu ?

    Sinon j'ai une solution mais qui n'est ni esthétique, on ne voit pas la cellule sélectionnée, ni complète: j'aimerais pouvoir utiliser Ctrl+C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    table est une chaîne = "TBL_CDE"
    Ligne est un entier
    Colonne est une chaîne
    Ligne = TableInfoXY(TBL_CDE, tiNumLigne, SourisPosX(), SourisPosY())
    Colonne = TableInfoXY(TBL_CDE, tiNomColonne, SourisPosX(), SourisPosY())
    VersPressePapier({table+"."+Colonne}[Ligne])
    De plus je ne doit pas utiliser de menu contextuel et je dois pouvoir sélectionner une ligne avant de sélectionner une cellule (même système qu'en mode saisie). Le problème serait donc comment sélectionner une cellule de table (pas spécialement le contenu, juste la cellule) ?

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Citation Envoyé par iiban Voir le message
    Est-il possible d'interdire la saisie dans une cellule mais de pouvoir sélectionner (et donc copier) son contenu ?
    Oui on peu il faut mettre la colonne en affichage seulement mais dans les dérails il y a des cases a cocher pour autoriser le copier coller
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Le problème c'est que je ne vois pas quelles cases cochées.
    Dans "Détails" de la table il y a:
    Paramètres ascenseur
    Paramètres de saisie
    Paramètres des colonnes


    Ce n'est pas le premier.
    Dans le deuxième il y a Saisie en cascade, Blocage enreg. modification, Enregistrer en sortie de ligne, retour à la ligne par ENTREE et Mode de saisie compatible 5.5.
    Dans le dernier il y a Mémoriser las config, titre de colonne multi-lignes, menu 'Sélectionner les colonnes...', Colonnes teste multi-lignes.

    Je ne vois donc pas quoi cocher. De plus j'ai oublié de préciser que certaines colonnes peuvent être saisies. Donc j'ai regardé dans le détail des colonnes concernées par mon problème :

    Paramètres de saisie:
    Effacement automatique
    Fin de saisie automatique
    Saisie obligatoire
    Histoire des saisies


    Je ne vois toujours pas lequel. Peux-tu m'aider?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Je ne comprend pas ce que tu veux, au juste ?

    Ta Table n'est pas en saisie, mais tu veux "Sélectionner" une cellule ? Qu'entends-tu par sélectionner ? Juste mettre en évidence ?
    Dans ce cas, il te suffit de changer la couleur de fond, par exemple !

  5. #5
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Attention, ne confond pas détail de la table avec détail des colonnes.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    En fait j'aimerais pouvoir copier dans le presse papier des valeurs inscrites dans ma table, pour pouvoir les coller sur des docs Word, Excel...
    Je peux le faire en mettant ma table et mes colonnes "en saisie". Cependant dans cette configuration, les valeurs peuvent être modifiée : il suffit que l'utilisateur fasse une erreur (C au lieu de Ctrl+C). La valeur initialement chargée dans la table serait "perdu" et l'utilisateur serait obligé de recharger la table pour de nouveau l'avoir.

    Ce que j'entendais par "sélectionner une cellule", c'est que dans le cas où je suis en mode "Affichage seulement", je ne peux que sélectionner une ligne. Le Ctrl+C marche alors mais il me copie toute la ligne.

    Enfin j'ai bien une solution pour copier les valeur en utilisant TableInfoXY et VersPressePapier mais je n'aime pas cette solution. En effet l'utilisateur ne voit pas ce qu'il copie car il clique juste sur la valeur qu'il veut copier sans qu'elle se sélectionne.

    Pour ce qui est de mettre en évidence une cellule mon problème est que je souhaiterais que le fond de la cellule change de couleur alors que la ligne est sélectionnée et qu'elle ne soit plus de cette couleur une fois qu'on change de ligne. En fait je vois bien comment changer de couleur mais je n'arrive pas à faire que cette couleur soit "au-dessus" du bandeau de sélection (qu'on puisse la voir même si la ligne est sélectionnée).

    J'espère que mes explication sont claires et merci pour votre aide.

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Salut,

    Le menu contextuel par défaut des tables ne convient pas ? parce que j'ai l'impression que ça fait tout ce que tu as envie de faire.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Moi il me conviendrait emplement mais l'utilisateur ne le veut pas. C'est vrai que le clic droit est déjà utilisé pour une autre fonction mais il serait facile de bidouiller quelque chose avec OuvreMenuContextuel(). Malheureusement je ne dois pas. Mais ça m'étonne quand même que Windev ne permette pas de sélectionner un texte dans une table sans pouvoir le modifier, un peu comme dans les champs de saisie où, si je me souviens bien, on peut sélectionner le contenu sans pouvoir le modifier en mode "Affichage seul".

  9. #9
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Alors concrètement ça va se passer comment ta copie ?
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    En fait j'avais fait cette solution

    Sélection d'une ligne de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SI ToucheEnfoncée(teControl) AND ToucheEnfoncée(teBoutonG) ALORS
    	table est une chaine = "TBL_CDE"
    	Ligne est un entier
    	Colonne est une chaîne
    	Ligne = TableInfoXY(TBL_CDE, tiNumLigne, SourisPosX(), SourisPosY())
    	Colonne = TableInfoXY(TBL_CDE, tiNomColonne, SourisPosX(), SourisPosY())
    	VersPressePapier({table+"."+Colonne}[Ligne]..ValeurAffichée)
    	TableSelectMoins(TBL_CDE,ligne)
    FIN
    Survol de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SI ToucheEnfoncée(teControl) ALORS
    	table est une chaine = "TBL_CDE"
    	Ligne est un entier
    	Colonne est une chaîne
    	Ligne = TableInfoXY(TBL_CDE, tiNumLigne, SourisPosX(), SourisPosY())
    	Colonne = TableInfoXY(TBL_CDE, tiNomColonne, SourisPosX(), SourisPosY())
    	SI {table+"."+Colonne}[Ligne]..ValeurAffichée<>"" ALORS
    		TBL_CDE..Bulle="Cliquer pour copier : "+{table+"."+Colonne}[Ligne]..ValeurAffichée
    	FIN
    FIN
    SI PAS ToucheEnfoncée(teControl) ALORS
    	TBL_CDE..Bulle=""
    FIN
    Ca me permettait de copier n'importe quelle valeur en m'indiquant avec une bulle les valeurs que je pouvais copier.
    Mais bon c'est pas exceptionnel et ça correspond pas trop aux attentes. Du coup je vais tout mettre en saisie et si l'utilisateur modifie une valeur il devra recharger sa table (c'est lui qui fait l'erreur donc c'est lui qui assume).
    Voilà donc merci pour votre aide mais j'abandonne.

  11. #11
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 467
    Points : 806
    Points
    806
    Par défaut
    Tu peux utiliser peut être un bouton ayant comme mode d'appel Ctrl+C. (tu définis ça dans l'IHM, Lettre d'appel).

    A chaque fois que tu sélectionne une celulle dans le tableau, bah le contenu est copié dans un champ caché.
    Lorsque tu fais Ctrl+C, le code du bouton est executé.
    Que fait le bouton ? Il copie dans le presse papier le contenu du champ caché en utilisant VersPressePapier...

    Maintenant, ce n'est qu'une idée... Je n'ai pas trop le temps de tester ça, mais l'algorithme me semble bon.

    Il faudrait voir si ça ne fait pas des conflits avec le Ctrl+C habituel.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Merci kuranes. C'est vrai que c'est une bonne idée. Mais l'utilisateur ne voit pas quelle cellule il a sélectionné, c'est ça qui est génant. En plus il faut faire ça sur toutes les fenêtres (ou presque) de l'appli et la demande n'est pas assez prioritaire pour que j'y passe plus de temps.

    Cependant j'y penserai la prochaine fois que ça m'arrive.
    En tous cas merci et bon dev!

  13. #13
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 467
    Points : 806
    Points
    806
    Par défaut
    Citation Envoyé par iiban Voir le message
    Merci kuranes. C'est vrai que c'est une bonne idée. Mais l'utilisateur ne voit pas quelle cellule il a sélectionné, c'est ça qui est génant. En plus il faut faire ça sur toutes les fenêtres (ou presque) de l'appli et la demande n'est pas assez prioritaire pour que j'y passe plus de temps.

    Cependant j'y penserai la prochaine fois que ça m'arrive.
    En tous cas merci et bon dev!
    Tant pis

    Voir quelle cellule serait sélectionnée est une chose relativement aisée...

    Il suffit de la mettre en gras quand on en sélectionne une...

    (et stocker en mémoire la référence de la cellule selectionnée... Comme ça quand on en sélectionne une autre on peut cesser que celle ci soit en gras...)

    Mais bon si tu n'a pas plus de temps, tant pis.

    Bon dev

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Et si tu essaies de mettre ta table en saisie, et que tu interceptes les frappes au claviers, les "coller", bref tout ce qui change le contenu de ta cellule et l'annules ?

  15. #15
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Quel entrain pour une discussion fermée mais j'en rajoutes! Si tu veux voir ta sélection au travers du bandeau d'un tableau tu n'as qu'à modifier l'image du bandeau afin qu'elle soit partiellement transparente.
    «Un problème bien défini est un problème à moitié résolu.»

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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