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 :

Utiliser la propriété text de Range


Sujet :

Macros et VBA Excel

  1. #1
    Invité(e)
    Invité(e)
    Par défaut Utiliser la propriété text de Range
    Bonjour à tous, c'est encore moi, mais ce matin je tombe sur pleins d'os ... x_x

    Alors pour faire simple, je cherche à selectionner une plage de cellule non vide sur ma colonne A... Simple non? Oui ! grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Divers").Range("A1:A" & _
    Range("A65535").End(xlUp).Row).Name = "yoyo"
    Avec ce code, je vais dans ma feuille divers, je regarde sir ma colonne A et je selectionne la plage de cellule non vide et je la nomme yoyo

    Mon problème :

    Sur cette plage, les cellules contiennent la formule !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(Annuaire!A2)&" "&GAUCHE(Annuaire!B2)&SI(ESTERREUR(TROUVE("-";Annuaire!B2;1));"";STXT(Annuaire!B2;TROUVE("-";Annuaire!B2;1)+1;1))
    Cette formule me permet de regarder dans une feuille annuaire, de regarde dans la colonne A pour prendre le nom et dans la colonne B pour l'initiale du prénom qui peut être composé.

    J'ai fais cette formule de A1 jusqu'à A600 sachant qu'il n'y à que 500 personnes, mais ça permet de ne pas changer le macros à chaques embauches et départ.

    Petite précision, je nomme la plage yoyo dans le but de l'utiliser dans une liste de validation... Et je ne veux pas de "blanc" or dans mon exemple, il y a 100 espaces blancs. Car Range utilise value, alors que text me permettrais (je penses) de faire référence à ce qui est affiché, c'est à dire rien de 500 à 600...

    J'espère me faire comprendre

    Si vous avez une solution, ou une meilleure façon de faire, pour en gros, avoir une liste nom - prénom, puis prendre le nom + initiale prénom, puis avoir cette plage nommée, sachant que la plage nommée devra se modifier elle même lorsque des nom s'ajouteront ou s'enleveront...

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par clecle69000 Voir le message
    ...
    J'espère me faire comprendre
    ...
    Ben c'est pas certain ça

    Je récapitule, sur ta feuille Divers, la formule qui extrait le nom et l'initiale basé sur la feuille Annuaire.
    Tu utilise plus de ligne sur ta feuille Divers que Annuaire => ligne vide dans ta feuille Divers quand elles se réfèrent à des lignes vides de la feuille Annuaire.

    Si c'est bien ça tu peux utiliser le nombre de ligne de ta feuille Annuaire pour définir la plage de ta feuille Divers.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim DerLig as long
    DerLig = Sheets("Annuaire").cells(columns(1).cells.count,1).End(xlUp).Row 'Plus ou moins le même principe que tu as utilisé dans la ligne ci-dessous
    Sheets("Divers").Range("A1:A" & DerLig).Name = "yoyo"
    Ou alors créer une macro qui "met à jour" tes formule si il y a un changement dans ta feuille Annuaire => même nombre de ligne sur les deux feuilles.

    A+

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Alors là, je dis bravo !

    Je ne savais pas du tout que l'on pouvait faire ça, c'est biiiiiiiiiiiiiiien plus simple que ce que j'avais en tête !

    J'ai rajouter un petit .row-1 pour ne pas compter le titre de colonne...

    Je vais juste te demander un dernier truc :
    dans cells(columns(1).cells.count,1)
    Le premier 1 sert à définir la colonne A, mais le deuxième aussi puisque normalement cells(row, column) non?

    En tout cas ça fonctionne nickel, je veux juste savoir comment Mais je comprends les 3/4

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Pour répondre à ta question...

    On aurait pu écrire en xl2003:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = Sheets("Annuaire").cells(65536,1).End(xlUp).Row
    Ce qui te montre qu'on doit bien définir la colonne pour la cellule de laquelle on "part" vers le haut

    En fait Columns(1).cells.count renvoi 65536 si tu es en xl2003
    Le numéro de cette colonne n'a pas d'importance en fait, contrairement au numéro de colonne associée à Cells.

    En espérant avoir été clair

    A+

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Parfaitement !

    Merci encore !

    J'espère que le code se simplifie avec excel 2007, car on va bientôt passer dans cette version

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par clecle69000 Voir le message
    Parfaitement !

    Merci encore !

    J'espère que le code se simplifie avec excel 2007, car on va bientôt passer dans cette version
    Raison de plus pour utiliser Columns(1).cells.count, ça t'éviteras des mauvaises surprises si ta feuille dépasse les 65536 lignes

Discussions similaires

  1. [Lazarus] Utilisation de la propriété text d'un TTreenode
    Par dnode57 dans le forum Lazarus
    Réponses: 3
    Dernier message: 28/09/2008, 01h11
  2. Réponses: 4
    Dernier message: 08/05/2006, 20h12
  3. [VBA-E]utilisation de Comment.Text
    Par logica dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/03/2006, 09h48
  4. [Delphi 6] Problème avec la propriété Text d'un composant
    Par bionoir dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/12/2005, 11h23

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