Macro excel: Selections multiples

Résolu
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

5 réponses

  1. 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...
    1. Modérateur
      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
  2. Modérateur
    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? --
    1. 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
      1. 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
      2. Ok je vais essayer je vous redis si ca marche.
      3. Ca marche super bien.

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

        Bonne journée

        Et encore merci
    2. 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. Modérateur
        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