Macro : sélection d'une ligne : code maj + espace

Bonjour à toutes et à tous,

Pour un projet où je suis déjà bien aidé sur ce forum ;) je crée une macro mais je bloque que un SendKeys

J'aimerais sélectionner la ligne entière de la cellule sélectionnée. Raccourci clavier MAJ + Espace mais je ne trouve pas de solution.
J'ai trouvé un SendKeys " " pour simuler l'espace mais ajouter le + pour le MAJ et ça ne fonctionne pas.

J'ai également essayé ActiveCell.EntireRow.Select mais sans succès (ça fonctionne quand je crée un bouton sur la page)

Merci d'avance pour votre aide et réponses.

Bonjour,

Surprenant que ActiveCell.EntireRow.Select ne fonctionne pas, chez moi aucun soucis. Est-il possible de nous joindre un bout de fichier avec un bout de code afin de voir ce qui ne va pas ?

Cdlt,

Bonjour Ergotamine,

J'ai oublié de préciser que ce test est fait sur Excel 2013 en français.

Voilà le code

Sub Clean_send_key()
   SendKeys "{Left}"
   SendKeys "{Down}"
   ActiveCell.EntireRow.Select
End Sub

Merci pour ton aide

Bonjour,

Normalement vous n'avez pas besoin des sendkeys. Que cherchez vous à faire ? Si c'est sélectionner la dernière ligne alors pas besoin de SendKeys :

Sub SELECTION()
ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).EntireRow.Select
End Sub

Cdlt,

Merci pour votre réponse.

Effectivement, je n'ai pas trouvé ce code comme explications.

Cela ne fonctionne pas comme je le souhaite.

Je souhaite faire descendre de 2 lignes afin de sélectionner la cellule ensuite sélectionner la ligne entière afin de supprimer la 3ème et 4ème ligne.

Sub Clean_send_key()
   SendKeys "{Left}"
   SendKeys "{Down}{Down}"

Ensuite je dois sélectionner la ligne entière (que je fais avec maj + espace) descendre de deux lignes et supprimer cette sélection de 2 lignes.

Merci beaucoup

Bonjour,

D'où l'intérêt de bien définir et expliquer le besoin. Essayez de parler en référence absolue car là ça devient difficilement compréhensible. Par exemple, en me positionnant sur la ligne 4 manuellement, je souhaite supprimer les 2 lignes d'en dessous. Dans ce cas en vous positionnant sur une des cellules de la ligne 4 :

Sub SELECTION()
ActiveCell.Offset(1).Resize(2).EntireRow.Delete
End Sub

Mais là j'ai du mal à me représenter ce que vous souhaitez réellement faire. Descendre de 2 lignes à partir d'où ? Sélectionner la 3ème et 4ème ligne de la feuille ou à partir d'une référence ? Si c'est de la feuille alors pourquoi ne pas faire :

Sub SELECTION()
Rows("3:4").Delete
End Sub

Là on sélectionne une ligne (la 2ème de quoi ?) on supprime les 3 et 4 (3 et 4 de où ?), et la partie en dessous le code est encore moins claire (on descend à partir de où ? Les 2 lignes c'est toujours les 3 et 4 donc on parle au début ?)

Cdlt,

Bonjour,

Merci pour vos réponses complètes et instructives.

Référence absolue, c'est compliqué parce qu'en fait, cette macro va me servir à chaque fois que je fais un copier coller dans la feuille excel (et il va en avoir énormement)

Donc je dois partir de la première cellule vide.

Au premier coller, ça sera A1 mais au deuxième ça sera A5 ensuite A9, bref chaque fois AX + 4

Donc le row à supprimer sera 3:4 ensuite 7:8, ....

Merci pour votre temps et votre patience

Bonjour,

En travaillant sur la plage collée uniquement afin de supprimer 2 lignes sur 4 comme vous l'avez demandé :

Sub SELECTION()
Dim LR As Long, L As Long, FR As Long
With Worksheets("Feuil1") 'A adapter
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row
    FR = ActiveCell.Row
    For L = LR To FR Step -4
        .Cells(L, 1).Offset(-2).Resize(2).EntireRow.Delete
    Next L
End With
End Sub

Si ça ne correspond pas merci de joindre un fichier représentatif avec les données initiales et le résultat attendu, quitte à démultiplier les feuilles pour avoir plusieurs étapes successives car je peine toujours à me représenter ce que veulent dire ces collages .. Je suis parti du principe que les données collées étaient par groupe de 4 (exemple 4 lignes d'une valeur 1, puis 4 lignes d'une valeur 2), dans ce cas on conserve les lignes 1:2 de la valeur 1 et 2. Puis un second collage intervient sous le même schéma et on souhaite supprimer les 2 dernières lignes tous les groupes de 4 lignes collés.

Cdlt,

Merci pour votre aide.

Je pense qu'effectivement un fichier sera plus simple que mes longs discours.

Voilà donc le fichier avec la première feuille qui contient le coller avec les infos brutes et la 2eme feuille qui contient le résultat attendu.

Merci

Bonjour,

Donc si je comprend bien le fichier original va être copié puis collé plusieurs fois les un a la suite de l'autre et vous souhaitez arriver au résultat attendu.

Dans ce cas, entre chaque copié coller :

Sub SELECTION()
Dim FR As Long, LR As Long
With Worksheets("Original") 'A adapter
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    FR = .Cells(1, 1).End(xlDown).Row
    .Cells(FR, 1).Offset(7).Resize(LR - 7).EntireRow.Delete
    .Cells(FR, 1).Offset(1).Resize(4).EntireRow.Delete
End With
End Sub

Ainsi si je recolle les mêmes données que la feuille Original après une première activation de la macro j'arrive au résultat suivant :

image

Je vous laisse tester et me donner les instructions sur les éventuelles modifications à apporter le cas échéant.

Cdlt,

Re bonjour Ergotamine,

Un énorme merci pour votre temps et efficacité, cela fonctionne parfaitement.

Auriez vous la gentillesse de m'expliquer les lignes suivantes ?

FR = .Cells(1, 1).End(xlDown).Row
    .Cells(FR, 1).Offset(7).Resize(LR - 7).EntireRow.Delete

Je pense comprendre le fonctionnement des autres mais alors ces deux là : je suis perdu.

Encore merci : génial.

Bonjour,

FR est l'équivalent de ce placer en cellule A1 et faire sur le clavier CTRL + flèche du bas afin de récupérer la dernière ligne pleine avant une ligne vide, donc dans votre premier jeu de données A2.

Ensuite la deuxième ligne par de cette cellule, décale de 7 lignes vers le bas ce qui donne A9. Resize permet de créer une hauteur de plage équivalent à LR (la dernière ligne pleine de votre table) auquel je retire les 7 lignes qui m'ont servit à décaler en haut afin de supprimer uniquement les lignes 9 a 111. On aurait pu se passer du -7 et uniquement faire Resize(LR) comme nous n'avons pas de lignes en dessous de LR.

Cdlt,

Merci beaucoup pour vos explications.

Ca me paraît clair comme ça. Reste à voir si je pourrai l'appliquer plus tard.

Génial.

Merci encore.

Rechercher des sujets similaires à "macro selection ligne code maj espace"