VBA Excel : comment faire un sélection de N éléments en "position relative"...ex

Signaler
Messages postés
11
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
17 mai 2005
-
Messages postés
11
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
17 mai 2005
-
Mon but est de sélectionner, dans un tableau de N lignes, le contenu d'une colonne precise

En fait, mon tab commence en C12 et s'arrête en Cells(12+N, 3). il s'étend de la colonne C à la H
Les colonnes D et E sont fusionnés.

Je souhaite trier les lignes du tab selon la colonne C dans l'ordre alphanumérique, seulement je ne peux le faire avec des colonnes "de taille différentes" ( D et E fusionnés) donc je dois les défusionner
Le tri et la défusion posent le même problème : sélectionner en relatif N éléments
J'ai essayé d'utiliser RangeSelection pour obtenir les coordonnées de la cellule extrême mais ça veut pas !

4 réponses

Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Bonjour,

vu le peu de réponses que suscite ta question je pense que ce n'était pas clair :) .

En fait, je ne comprends pas ce que tu veux faire ...
Si tu veux sélectionner l'ensemble des cellules d'une colonne tu peux faire (je le fais sur la colonne A).

Dim celluleFin As Range
Set celluleFin = Range("A1")

While Not IsEmpty(celluleFin.Offset(1, 0))
Set celluleFin = celluleFin.Offset(1, 0)
Wend

Range("A1:" & celluleFin.Address).Select

MsgBox celluleFin.Address


J'espère que c'était la réponse à ta question ;) , sinon, réexplique ce que tu veux faire :)

Fanny
Messages postés
11
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
17 mai 2005

heu....en fait, en cherchant +, j'ai trouvé ce que je voulais,
c'était comme dans ton exemple sauf que le tab était à 5 colonnes, et que je ne savais alors pas me servir de rangeSelection et qu'une cellule avait une propriété Adress.
Mon tab devait être trié seulement certains cellules étaient fusionnées donc j'ai dû défusionner, trier puis refusionner
donc depuis voilà :

Public Sub TrierAffaire()

Dim basTab As String, basNomAff1 As String, rangeTemp1 As String, rangeTemp2 As String

Worksheets("Principal").Activate

' Scrutation du tab pour savoir son nb de lignes
Range("C12").Select
Do Until IsEmpty(Selection)
Selection.Offset(1, 0).Select
Loop

' Stockage des coordonnées nécessaires
' Coordonnées dernières cellules de la colonne fusionnée
Selection.Offset(-1, 1).Select
basNomAff1 = ActiveWindow.RangeSelection.Address
' Coordonnées "bord bas droit du tab"
Selection.Offset(0, 4).Select
basTab = ActiveWindow.RangeSelection.Address

' Défusion des cellules de la colonne "Nom de l'affaire"
Range("D12", basNomAff1).Select
Selection.MergeCells = False

' Tri des lignes du tab
Range("C12", basTab).Select
Selection.Sort Key1:=Range("C12"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

' (Re)fusion des cellules de la colonne "Nom de l'affaire" _ 2/2
Range("D12").Select
Do Until IsEmpty(Selection)
rangeTemp1 = ActiveWindow.RangeSelection.Address
rangeTemp2 = ActiveWindow.Selection.Offset(0, _
1).Address
Range(rangeTemp1, rangeTemp2).MergeCells = True
Selection.Offset(1, 0).Select
Loop
End Sub

là maintenan, ça va, mes pensées sont tjs chaotiques qd je les exprime mais ça fonctionne et comme avant, je dois plus chercher dans l'aide avant de renoncer :(

Enfin, merci ! C'est la 2è fois que tu m'aides :)
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Cool si tu y es parvenu de toi-même :big) .

Depuis que tu avais posté ta question j'hésitais à te répondre ne sachant pas si je la comprenais dans le bon sens ...

En plus tu commentes bien ton code, bravo ;) .

Fanny
Messages postés
11
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
17 mai 2005

Bah....en BTS Informatique et Réseaux pour l'Industrie et les Services techniques, on a ( que ) de la méthode ! :big)

Là maintenant, il me reste une fonction de recherche dans un tab ( pour une production P, il y a un tab des surcoûts issus des retouches que l'on a faites à cette production, et il faut y afficher la somme de ces surcoûts selon une période [ an | mois ] et la provenance [ Bureau d'étude | Assemblage | Commercial | Mise au point | Sous-traitant ] ) - je me comprends, si tu ne le peux pas, désolé ! - idée plus claire..... :blush)
Et une 2ème, toute mini, j'ai 2 tab sur une feuille :
L'un affiche les différentes affaires de l'entreprise et possède un filtre sur le numéro de l'affaire, l'autre, quand un numéro est choisi dans le filtre, doit afficher les différentes retouches de l'affaire et avoir lui aussi un filtre sur ces colonnes. ( C'est presque clair... ) Le problème est que je souhaitais utiliser un filtre automatique sur le 1er tab (affaires) qui, quand on choisirait un numéro, se désactiverait pour apparaître en suite sur le deuxième tab....mais quand il se désactive, il fait réapparaître les lignes filtrées ( Normal....) et j'y avais pas pensé :clown) , je dois donc faire le filtre moi-même style scrutation->dès que trouvé numéro, diminuer hauteur des lignes supérieures jusqu'à haut de tab, diminuer hauteur lignes inférieures jusqu'à ligne vide

pas trop dur, tout ça, avec mes données internes (tête) mais pas avec celles que je fournis............lol.........ne pas pouvoir se faire comprendre des autres sauf après une réflexion + longue que la moyenne et par écrit, c'est dur ! :sad) dans la société, tu passes à côté des sujets de discussion, - So..." I am tout seul !" %-6 + les autes défauts..... je suis bien devant un PC ! Merci, @ + !