Sélection par macro commandes excel

Fermé
ufos Messages postés 13 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 2 novembre 2010 - 12 mai 2008 à 15:45
ufos Messages postés 13 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 2 novembre 2010 - 2 nov. 2010 à 20:50
Bonjour et merci de votre aide
Mon problème :
J'ai un tableau avec un nombre de colonnes évolutif (une de plus à chaque mois)
un nombre de lignes fixe
Je veux sélectionner les 40 premières lignes de la dernière colonne utilisée, pour cela j'exécute la macro commande suivante :

Range("A2").Select
While ActiveCell() <> ""______________ 'recherche de la première colonne vide
ActiveCell.Offset(0, 1).Range("A1").Select
Wend
Selection.Offset(0, -1).Range("A1").Select ____________________ 'retour sur la dernière colonne remplie
ActiveWorkbook.Names.Add Name:="DébutSélection", RefersToR1C1:= _
"='Relevés àjour'!ActiveCell()" __________________ 'défini un nom pour la première cell de la selection
ActiveCell.Offset(40, 0).Range("A1").Select
ActiveWorkbook.Names.Add Name:="FinSélection", RefersToR1C1:= _
"='Relevés àjour'!ActiveCell()" ____________________ 'défini un nom pour la dernière cell de la selection
Range(DébutSélection:FinSélection).Select __________ 'cette commande ne fonctionne pas???????


Ces lignes de commande me permettent d'atteindre la dernière colonne remplie et de nommer la première et la dernière cellule de la sélection à réaliser
la ligne de commande "Range(DébutSélection:FinSélection).Select" est sensée réaliser la sélection de ces 40 lignes mais elle ne fonctionne pas.
Je suis persuadé qu'il y a de multiples solutions plus élégantes que la miènne même sans nommer les cellules.
Pourriez vous me donner une solution

merci

ufos
A voir également:

3 réponses

Bonjour,

Il faut mémoriser la dernière colonne dans une variable pour s'en servir par la suite. Voici la macro qui marche

Dim col As Integer

Range("A2").Select
While ActiveCell() <> "" 'recherche de la première colonne vide
ActiveCell.Offset(0, 1).Select
Wend
col = ActiveCell.Column -1
Range(Cells(2, col), Cells(42, col)).Select


A+.
0
ufos Messages postés 13 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 2 novembre 2010
12 mai 2008 à 17:46
Superbe ça marche très bien. Inutile de passer par des noms de cellules comme je l'avais fait.

Merci beaucoup

ufos
0
ufos Messages postés 13 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 2 novembre 2010
12 mai 2008 à 22:02
Rebonjour amigo

pour aller un peu de l'avant j'ai essayé de faire une sélection sur les lignes pour voir si cela est pareil.
J'ai fait le petit programme suivant :
Sub essai()
Dim ligne As Integer

Sheets("Relevés àjour").Select
Range("A41").Select
ligne = ActiveCell.Row
Range(Cells(ligne, 1), Cells(ligne, 26)).Select

End Sub
Ca marche bizarrement. il se trouve que les lignes de mon tableau ont un fond coloré suivant la rubrique.
dans ce petit programme je ne devrais sélectionner qu'une seule ligne, hors la couleur de fond de la rubrique concernée est le jaune clair. Résultat toutes les lignes adjacentes de la couleurs jaunes clair ont été sélectionnées. J'ai refait l'essai avec une zone où la couleur de fond est automatique. Résultat seule la ligne concernée a été sélectionnée.

Comment pouvoir éviter de sélectionner plusieurs ligne d'une même couleur de fond si je veux qu'une seule ligne soit sélectionnée ???

merci

ufos
0
renaisssancev
2 nov. 2010 à 16:04
Regarde bien il y a une virgule de trop
@+
0
ufos Messages postés 13 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 2 novembre 2010
Modifié par ufos le 2/11/2010 à 21:00
Mon précédent post date de 2008. Comme à l'époque je n'ai pas eu de réponse, j'ai laissé tombé et je faisai le travail manuellement jusqu'à aujourd'hui. Et si je n'ai pas eu de réponse c'est que cette petite macro fonctionne parfaitement.
J'ai donc repris l'automatisation de la tache et maintenant elles se fait sans intervention de ma part.
Pourquoi je n'arrivais pas à la faire fonctionner ????????????????????? C'était il y a 2 ans.

Merci

ufos
0