Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 14h00   #1 (permalink)
Membre à l'essai
 
Date d'inscription: décembre 2009
Messages: 49
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 :
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 :
=(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...
clecle69000 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 14h21   #2 (permalink)
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
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 :
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+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 14h35   #3 (permalink)
Membre à l'essai
 
Date d'inscription: décembre 2009
Messages: 49
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
clecle69000 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 14h41   #4 (permalink)
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
Par défaut

Pour répondre à ta question...

On aurait pu écrire en xl2003:
Code :
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+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 14h43   #5 (permalink)
Membre à l'essai
 
Date d'inscription: décembre 2009
Messages: 49
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
clecle69000 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 14h46   #6 (permalink)
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
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
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 04h10.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.