Macro excel: Selections multiples

Résolu
Elbosador -  
pijaku Messages postés 13513 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

5 réponses

  1. jejelefou Messages postés 310 Statut Membre 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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
  3. 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
    1. jejelefou Messages postés 310 Statut Membre 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
    2. Elbosador
       
      Ok je vais essayer je vous redis si ca marche.
      0
    3. 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
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      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