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
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 :
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 :
=(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...
  Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 14h21   #2
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
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 :
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+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 14h35   #3
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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
  Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 14h41   #4
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
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 00
Vieux 03/02/2010, 14h43   #5
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Parfaitement !

Merci encore !

J'espère que le code se simplifie avec excel 2007, car on va bientôt passer dans cette version
  Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 14h46   #6
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
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 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h26.


 
 
 
 
Partenaires

Hébergement Web