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 :

Largeur cellule tableur toutes les x lignes [WD25]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : février 2017
    Messages : 29
    Points : 23
    Points
    23
    Par défaut Largeur cellule tableur toutes les x lignes
    Bonjour,


    Je dispose d'un tableur, et souhaite à la ligne 59 une largeur précise de cellule
    Le code suivant fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FEN_Synthèse.TBLR_Synthèse ["A59"].Hauteur = 40

    Mon tableur se trouve entre les lignes A45 et R78
    A travers A1, je fait un copier coller de mon tableur avec d'autres données toutes les 35 lignes.
    La cellule ["S60"] me permet d’indiquer la ligne à partir de laquelle je recopie mon tableur
    La cellule ["S61"] me permet d'indiquer la premier ligne (59) pour laquelle je souhaite une largueur fixe
    Le copier coller fonctionne parfaitement

    Le soucis :
    Je souhaite toutes les 35 lignes avoir une largeur de cellule identique
    1ère cellule concernée A59; 2ème cellule concernée A94...

    pour cela le code complet est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    A1 est un numérique
    A2 est un numérique
    A1 = FEN_Synthèse.TBLR_Synthèse["S61"]
    A2 = FEN_Synthèse.TBLR_Synthèse["S60"]
    Texte est une chaîne = "A"
     
    FEN_Synthèse.TBLR_Synthèse.SelectFeuille("Synthèse")
    TableurSelectPlus(TBLR_Synthèse,"A45","R78")
    ExécuteFAA (TBLR_Synthèse,faaCopier)
    TableurSelectMoins(TBLR_Synthèse,"A45","R78")
    TableurSelectPlus(TBLR_Synthèse,A1)
    ExécuteFAA (TBLR_Synthèse,faaColler)
     
    FEN_Synthèse.TBLR_Synthèse ["(Texte + A2)"].Hauteur	= 40
     
    FEN_Synthèse.TBLR_Synthèse ["S60"] = A1 + 35
    FEN_Synthèse.TBLR_Synthèse ["S61"] = A2 + 35
    Mais cela bug au niveau du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FEN_Synthèse.TBLR_Synthèse ["(Texte + A2)"].Hauteur	= 40
    Je cherche un code qui permettrait automatiquement d'avoir TBLR_Synthèse ["A59"].Hauteur; ["A94"].Hauteur...

    Merci pour votre aide

    Claude

  2. #2
    Expert confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    2 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 2 433
    Points : 4 458
    Points
    4 458
    Par défaut
    Bonjour,
    Avant toute chose 2 petites questions.
    Dans un premier temps, pourquoi préfixes tu ton tableur avec le nom de la fenêtre ? Cela n'est utile que pour lever les possibles ambiguïtés.
    Dans un deuxième temps tu nous parles de largeur et tu utilises la propriété Hauteur qu'en est-il vraiment ?

    Pour répondre à ta question, je pense que tu devrais regarder du côté de xlsNomVersCoordonnées/xlsCoordonnéesVersNom qui te permet, à partir du nom de la cellule de récupérer soit le n° de ligne, soit le n° de colonne ou vice versa
    A partir de là, il suffit de boucler.
    Un truc du style
    Code Texte : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DernièreLigne<-ChercherPremièreLigneVide()-1
     
    POUR Ligne DE 59 A DernièreLigne PAS 35
         HauteurLigne(xlsCoordonnéesVersNom(1,Ligne))<-40
    FIN POUR
    Il y a peut être plus simple, mais ça tourne

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 3 803
    Points : 8 794
    Points
    8 794
    Par défaut
    Si on modifie la hauteur d'une cellule, on modifie la hauteur de toutes les cellules de la ligne. Donc, une chose est sure, c'est le n° de ligne qu'il faut donner en paramètre, et pas une cellule.
    Mais apparemment, nulle part dans la documentation, on ne dit qu'on peut avoir des lignes de hauteurs différentes dans un champ tableur.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : février 2017
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Merci pour ces retours.

    C'est bien la hauteur d'une ligne (et non d'une cellule et non la largeur) que je cherche à figer (première ligne à 59 puis idem toutes les 35 lignes)

    J'ai supprimer la référence à la fenêtre et est insérer le code de Voroltinquo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    A1 est un numérique
    A2 est un numérique
    A1 = FEN_Synthèse.TBLR_Synthèse["S60"]
    A2 = FEN_Synthèse.TBLR_Synthèse["S61"]
     
    Info ("A2",A2)
    Texte est une chaîne = "A"
    Info ("résultat",Texte + A2)
     
     
    TBLR_Synthèse.SelectFeuille("Synthèse")
    TableurSelectPlus(TBLR_Synthèse,"A45","R78")
    ExécuteFAA (TBLR_Synthèse,faaCopier)
    TableurSelectMoins(TBLR_Synthèse,"A45","R78")
    TableurSelectPlus(TBLR_Synthèse,A1)
    ExécuteFAA (TBLR_Synthèse,faaColler)
     
     
    DernièreLigne <-ChercherPremièreLigneVide()-1
    *
    POUR Ligne de 59 À DernièreLigne PAS 35
    	HauteurLigne (xlsCoordonnéesVersNom(1,Ligne))<-40
    FIN  POUR
     
     
    TBLR_Synthèse ["S60"] = A1 + 35
    TBLR_Synthèse ["S61"] = A2 + 35

    Cela génère 2 erreurs
    Dernière ligne est inconnu ou inaccessible. idem pour ChercherPremièreLigneVide()

    Il y à forcement quelque chose que je n'ai pas compris.

    Merci pour votre aide

    Claude

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : février 2017
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Après plusieurs essais je viens de trouver une solution. Le code n'est pas top mais cela fonctionne !
    Avec le chiffre 94 renseigné à la cellule ["S61"]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    A1	est un numérique
    A2	est un numérique
    A1	= FEN_Synthèse.TBLR_Synthèse["S60"]
    A2	= FEN_Synthèse.TBLR_Synthèse["S61"]
     
    TBLR_Synthèse.SelectFeuille("Synthèse")
    TableurSelectPlus(TBLR_Synthèse,"A45","R78")
    ExécuteFAA (TBLR_Synthèse,faaCopier)
    TableurSelectMoins(TBLR_Synthèse,"A45","R78")
    TableurSelectPlus(TBLR_Synthèse,A1)
    ExécuteFAA (TBLR_Synthèse,faaColler)
     
     
    NomCellule est une chaîne = xlsCoordonnéesVersNom(1,A2)
    Info ("non", NomCellule)
    FEN_Synthèse.TBLR_Synthèse["A59"].Hauteur = 40
    FEN_Synthèse.TBLR_Synthèse [NomCellule].Hauteur	= 40
     
     
    TBLR_Synthèse ["S60"]				= A1 + 35
    TBLR_Synthèse ["S61"]				= A2 + 35

  6. #6
    Expert confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    2 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 2 433
    Points : 4 458
    Points
    4 458
    Par défaut
    Citation Envoyé par saosimao Voir le message
    Il y à forcement quelque chose que je n'ai pas compris.
    En effet. C'est l'algorithme de la fonction que tu désires que j'ai fourni. i.e. un pseudo code lisible par tout le monde mais qui doit être traduit (implémenté) dans le langage désiré (ici le WL. Comme on travaille sur un tableur, cela pourrait être le VBA si l'on travaille avec Excel, LibreOffice Basic, Javascript, BeanShell ou python pour un tableur LibreOffice ...)
    En WL, cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    PROCÉDURE AjusterHauteur(nLigneDébutAjustement est entier,nHauteurSouhaitée est entier)
    nLigneEnCours est entier
    nDernièreLigne est entier
     
    nDernièreLigne=RécupérerDernièreLigne()
     
    POUR nLigneEnCours=nLigneDébutAjustement À nDernièreLigne PAS 35
    	TBLR_Synthèse[xlsCoordonnéesVersNom(1,nLigneDébutAjustement)]..Hauteur=nHauteurSouhaitée
    FIN
    RécupérerDernièreLigne est une fonction perso qu'il faut aussi implémenter.
    Le cas le plus courant est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FONCTION RécupérerDernièreLigne(saNomFichier est chaîne=TBLR_Synthèse..CheminFichier):entier
    xlsSynthèse est un xlsDocument
     
    TableurSauve(TBLR_Synthèse,saNomFichier)
    xlsSynthèse=xlsOuvre(saNomFichier)
     
    RENVOYER xlsNbLigne(xlsSynthèse,Faux)
    Toutefois dans ton cas on peut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    // Résumé : Renvoie la dernière ligne utilisée à la suite d'une copie de plage
    // Description des paramètres d'entrée/sortie de 'RécupérerDernièreLigne' :
    //
    // Syntaxe :
    //[ <Résultat> = ] RécupérerDernièreLigne (<nLigneDébutCollage> est entier, <saPlageSource> est chaîne)
    //
    // Paramètres :
    //	nLigneDébutCollage (entier) : Ligne dans laquelle le collage commence
    //	saPlageSource (chaîne ANSI) : Plage de la source du collage sous la forme Cellule1:Cellule2
    // Valeur de retour :
    // 	entier : Dernière ligne de la copie
     
    FONCTION RécupérerDernièreLigne(nLigneDébutCollage est entier,saPlageSource est chaîne):entier
    nHauteurCollage est un entier
     
    nHauteurCollage=xlsNomVersCoordonnées(ExtraitChaîne(saPlageSource,2,":"),xlsNumLigne)-...
    				xlsNomVersCoordonnées(ExtraitChaîne(saPlageSource,1,":"),xlsNumLigne)
     
    RENVOYER nLigneDébutCollage+nHauteurCollage-1
    Ce code permet de traiter une copie faite "au milieu" d'une feuille (i.e. avec des ligne au dessus et des lignes en dessous.)
    Il y a peut être plus simple, mais ça tourne

  7. #7
    Membre à l'essai
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    février 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : février 2017
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Merci à Voroltinquo pour ces explications.

    Claude

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

Discussions similaires

  1. [XL-365] Sélection plage de cellules toute les 6 lignes
    Par arverne63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/07/2021, 09h47
  2. Réponses: 13
    Dernier message: 28/11/2019, 11h10
  3. somme toutes les n lignes de cellules
    Par gigot dans le forum Excel
    Réponses: 3
    Dernier message: 21/05/2019, 09h27
  4. [E-03] copier une cellule toutes les 7 lignes
    Par hdisnice dans le forum Excel
    Réponses: 7
    Dernier message: 22/03/2009, 13h43
  5. Réponses: 1
    Dernier message: 04/08/2007, 19h07

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