Macro excel: Selections multiples

Résolu
Elbosador -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je suis debutant sur les macros de excel et j'aurais besoin d'aide.

Ayant chercher un peu partout mais n'ayant pas trouver une solution, je voudrais savoir si il est possible de faire une selection de plusieurs cellules, selection avec controle ou maj, et de recuperer les lignes de ces cellules actives.

Je sais que pour une seule cellule active nous pouvons faire:
r = Activecell.row

J'ai aussi essayé avec une boucle mais le problème c'est que je n'ai que la première ligne de selectionné et je ne sais pas comment nous pouvons selectionner les autres cellules selectionné...

Merci d'avoir lu mon problème,

Cordialement
A voir également:

5 réponses

jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Bonjour,

Pour compter le nombre de cellule puis les parcourrir les unes apres les autres J'ai vu cette option :

imax = Selection.Areas.Count
For i = 1 To imax
Selection.Areas(i).Value = imax
Next

a modifier bien sur

a+

jéjé
1
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Bonjour,
Je te livre "brut de décoffrage" trois codes trouvés sur : https://apprendreexcel.com/
Teste les et si tu as besoin de conseil ou d'adaptation, n'hésite pas à poser d'autres questions.

Sub SelectionPlageAvecSouris()
      Dim Plage As Range
      Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
      MsgBox ("La plage que vous avez séléctionnez est : " & Plage.Address)
End Sub

Sub SelectionDiscontinue()
      Dim Z1, Z2, MaPlageMultiZone As Range
      Worksheets("Feuil1").Select
      Range("A1").Select
      ActiveCell.End(xlDown).Select
      Zone1 = ActiveCell.Address
      Selection.Offset(0, 2).Select
      Zone2 = ActiveCell.Address
      Set Z1 = Range("A1", Zone1)
      Set Z2 = Range("C1", Zone2)
      Set MaPlageMultiZone = Union(Z1, Z2)
      ZoneSelection = MaPlageMultiZone.Select
End Sub

Sub SelectionDeuxColonnesNonContigues()
' Soit les colonnes A (1) et D (4) à sélectionner
      NCol1 = 1
      NCol2 = 4
      Union(Cells(1, NCol1), Cells(1, NCol2)).EntireColumn.Select
End Sub
0
Elbosador
 
Sauf erreur, ces macros ne peuvent être utilisé seulement si nous connaissons soit les lignes ou les colonnes selectionnées.

Car mon problème c'est que je suis sur un tableau on selectionne une ou plusieurs lignes une autre feuille s'ouvre et recopie les informations qui sont sur la ligne selectionnée.

Mais ceci est deja fait, si vous voulez que je vous link ma macro demandé le moi.

Mais le problème c'est que je n'arrive pas à avoir les autres numeros de lignes selectionnées.

j'ai deja reflechit a çà avec cette acro:


Dim a_imp()

For e = 1 to ActiveWindows.rangeSelection.count

For h=1 To 300

If activecell.row = h then
l = l + 1
ReDim Preserve a_imp(l)
a_imp(l) = h
'Récupèration du numero de ligne
Goto 5
End If

Next

5

'ActiveCell suivant

Next


Si vous avez d'autre idées je suis preneur

Merci pour votre reponse
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Avec mon code, tu peux obtenir tous les num de lignes de toutes les cellules selectionnées :

imax = Selection.Areas.Count
For i = 1 To imax
r = Selection.Areas(i).row
Next
0
Elbosador
 
Ok je vais essayer je vous redis si ca marche.
0
Elbosador
 
Ca marche super bien.

Je vous remercis pour votre aide ça m'a été très utile. :)

Bonne journée

Et encore merci
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Sinon en adaptant un peu (beaucoup) le premier code que j'ai donné on obtient :
Sub SelectionPlageAvecSouris() 
Dim MonTableau() As String 
Dim Plage As Range 
Dim j As Integer 
Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8) 
MonTableau = Split(Plage.Address, ",") 
    For j = 0 To UBound(MonTableau) 
        MsgBox MonTableau(j) 
    Next j 
End Sub

Suffit de sélectionner x cellules avec la souris et la touche Ctrl (continue ou discontinue la plage, peu importe...) quand la macro le demande...
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
llochou
 
Bonjour,

je sais que le sujet est vieux mais vous pourrez surement m'aider.
J'ai mis sur place une macro permettant de sélectionné la case de la colonne et de copier la cellule en B en étant sur n'importe quelle cellule de la ligne qui m'intéresse.

Cependant j'aimerai pouvoir sélectionné des cases de plusieurs lignes et lancer ma macro qui irait ma sélectionner plusieurs case dans ma colonne B. Je joins un bout du code que j'ai créé.

Dim select1 As Object
Dim str As String
Dim dir As String
Workbooks.Open Filename:="X:\Departements\Sys-Plat DSMP\Apprenti\Lucas\Projet Processus\RLT_LOG\BL.xls"
Workbooks("Fichier RLT_Log.xls").Activate
Range("B" & ActiveCell.Row).Select 'Sélectionner la cellule à lintersection de la colonne B et de la ligne active
selection.Copy
Set select1 = selection
Workbooks("BL.xls").Activate
Range("A11:D12").Select
ActiveSheet.Paste

Workbooks("Fichier RLT_Log.xls").Activate
select1.Offset(0, -1).Select
....

Merci de votre réponse, enfin j'espère que vous me répondrez, vous ou quelqu'un...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Salut,
Regarde cette macro de : https://apprendreexcel.com/ que j'ai légèrement modifié pour toi.
Split(MonTableau(j), "$")(2) te donne ici le numéro des lignes que tu as sélectionné...

Sub SelectionPlageAvecSourisetrestitution()
Dim MonTableau() As String
Dim Plage As Range
Dim j As Integer
Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
MonTableau = Split(Plage.Address, ",")
    For j = 0 To UBound(MonTableau)
        MsgBox Split(MonTableau(j), "$")(2)
    Next j
End Sub
0