Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sélection inversée

12 réponses
Avatar
d
salut,
je voudrais ne sélectionner que quelques cellules dans une colonne qui
en contient des centaines, et puis inverser la sélection, ce qui serait
moins fatiguant ;-)
est-ce possible ?
merci d'avance
d@n

10 réponses

1 2
Avatar
Pounet95
Bonsoir,
Pas très claire la question, mais je tente quand même une proposition :
est-ce qu'un filtre ( élaboré ou non ) ne ferait pas l'affaire en adaptant
le
ou les critères aux cellules à afficher ou non ????

Bonne fin d'après-midi

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"" a écrit dans le message de news:

salut,
je voudrais ne sélectionner que quelques cellules dans une colonne qui en
contient des centaines, et puis inverser la sélection, ce qui serait moins
fatiguant ;-)
est-ce possible ?
merci d'avance





Avatar
docm
Bonjour

Pour inverser la sélection dans une colonne:
Basé sur
http://groups.google.com/group/microsoft.public.excel.programming/browse_frm/thread/ea0fd4861ae5221e/4c81a708fd42e997#4c81a708fd42e9
97

Sub InverseSelection()
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng As Range
Dim cell As Range

colonne = Selection.Column
ligne = Cells(65536, colonne).End(xlUp)
Set rng1 = Range(Cells(1, colonne), Cells(ligne, colonne))
Set rng2 = Selection

Set rng = Intersect(rng1, rng2)
If rng1.Address = rng2.Address Then
Exit Sub
End If

For Each cell In Union(rng1, rng2)
If Intersect(cell, rng) Is Nothing Then
If rng3 Is Nothing Then
Set rng3 = cell
Else
Set rng3 = Union(rng3, cell)
End If
End If
Next

rng3.Select

End Sub

docm

"" a écrit dans le message de news:
salut,
je voudrais ne sélectionner que quelques cellules dans une colonne qui
en contient des centaines, et puis inverser la sélection, ce qui serait
moins fatiguant ;-)
est-ce possible ?
merci d'avance





Avatar
d
Pas très claire la question, mais je tente quand même une proposition :
est-ce qu'un filtre ( élaboré ou non ) ne ferait pas l'affaire en adaptant
le
ou les critères aux cellules à afficher ou non ????

ok,

je précise :
j'ai une feuille avec 3 ou 4 colonnes
dans chaque colonnes j'ai de 50 à 150 lignes ou cellules (remplies)
et je dois sélectionner certaines cellules dans certaines colonnes
le problème, c'est que je dois en sélectionner beaucoup plus que ce que je
ne dois pas sélectionner
donc, dans l'explorateur, je sélectionnerais 10 fichiers, puis je ferais
SELECTION/INVERSER et hop, mes 147 fichiers restants seraient sélectionné !
eh bien je voudrais arriver à faire pareil dans Excel...
c'est possible ?
je vous signale de suite que je ne sais pas comment manipuler du code...
sorry


Avatar
d
Pour inverser la sélection dans une colonne:
Basé sur

http://groups.google.com/group/microsoft.public.excel.programming/browse_frm/thread/ea0fd4861ae5221e/4c81a708fd42e997#4c81a708fd42e9

97

salut,

c'est super gentil, mais je suis bien trop nouveau pour savoir quoi faire
avec ce code, désolé...
y a pas un autre moyen ?
merci


Avatar
docm
1. Sélectionne le code ( c-a-d le mettre en surbrillance)
2. Copie-le ( Clic droit sur le texte en surbrillance. Choisir COPIER )
3. Dans Excel, menu Outils/Macros/Visual Basic Editor
4. Ensuite, menu Insertion/Module
5. Ensuite, menu Edition/Coller (le code copié vient d'être coller dans un module standard)
6. Tu peux fermer l'Editeur Visual Basic.
7. Sur ton tableau Excel, sélectionne quelques cellules d'une seule colonne
8. Menu Outils/Macro/Macros
9. Double-clic sur InverseSelection pour inverser la sélection.

docm

Sub InverseSelection()
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng As Range
Dim cell As Range

colonne = Selection.Column
ligne = Cells(65536, colonne).End(xlUp)
Set rng1 = Range(Cells(1, colonne), Cells(ligne, colonne))
Set rng2 = Selection

Set rng = Intersect(rng1, rng2)
If rng1.Address = rng2.Address Then
Exit Sub
End If

For Each cell In Union(rng1, rng2)
If Intersect(cell, rng) Is Nothing Then
If rng3 Is Nothing Then
Set rng3 = cell
Else
Set rng3 = Union(rng3, cell)
End If
End If
Next

rng3.Select

End Sub

"" a écrit dans le message de news: OQv$sL$
Pour inverser la sélection dans une colonne:
Basé sur



http://groups.google.com/group/microsoft.public.excel.programming/browse_frm/thread/ea0fd4861ae5221e/4c81a708fd42e997#4c81a708fd42e9

97

salut,

c'est super gentil, mais je suis bien trop nouveau pour savoir quoi faire
avec ce code, désolé...
y a pas un autre moyen ?
merci






Avatar
d
9. Double-clic sur InverseSelection pour inverser la sélection.

docm

ok, ça marche, j'ai eu un bug au début et puis ça marche, merci ;-)

seulement, lorsque je referme le classeur, si je réouvre Excel pour un autre
travail, la macro ne s'y trouve plus...
comment faire pour enregistrer quelque part, et pouvoir m'en resservir une
autre fois SVP ?
merci


Avatar
JLuc
*Bonjour *,
Il faudrait l'enregistrer dans le PERSO.xls


9. Double-clic sur InverseSelection pour inverser la sélection.

docm

ok, ça marche, j'ai eu un bug au début et puis ça marche, merci ;-)

seulement, lorsque je referme le classeur, si je réouvre Excel pour un autre
travail, la macro ne s'y trouve plus...
comment faire pour enregistrer quelque part, et pouvoir m'en resservir une
autre fois SVP ?
merci




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
d
9. Double-clic sur InverseSelection pour inverser la sélection.

docm

crotte... j'ai à nouveau le bug...



tu ne veux pas vérifier le code svp ?
merci




Avatar
docm
Il y avait une erreur dans la ligne
ligne = Cells(65536, colonne).End(xlUp).Row

Essaie ceci:

Sub InverseSelection()
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng As Range
Dim cell As Range

colonne = Selection.Column
ligne = Cells(65536, colonne).End(xlUp).Row

If ligne <= 1 Then Exit Sub
Set rng1 = Range(Cells(1, colonne), Cells(ligne, colonne))
Set rng2 = Selection

Set rng = Intersect(rng1, rng2)
If rng1.Address = rng2.Address Then
Exit Sub
End If

For Each cell In Union(rng1, rng2)
If Intersect(cell, rng) Is Nothing Then
If rng3 Is Nothing Then
Set rng3 = cell
Else
Set rng3 = Union(rng3, cell)
End If
End If
Next

rng3.Select

End Sub



"" a écrit dans le message de news:
9. Double-clic sur InverseSelection pour inverser la sélection.

docm

crotte... j'ai à nouveau le bug...



tu ne veux pas vérifier le code svp ?
merci








Avatar
docm
Pour créer le classeur Perso.xls qui sera masqué et chargé à chaque ouverture de Excel,
1. Menu Outils/Macro/Nouvelle macro/Sélectionne Enregistrer la macro dans Classeur de macros personnelles/OK
2. Menu Outils/Macro/Arrêter l'enregistrement
3. Menu Outils/Macro/Visual Basic Editor (ou Alt-F11)
Tu vois dans la fenêtre Projet qu'il y a un projet qui s'appelle VBAProject (perso.xls)
4. Dans ce projet, double-clique sur Module1
5. Efface au complet la nouvelle macro qui s'appelle probablement Sub macro1()
6. Remplace-la par la macro InverseSelection.
7. Tu peux fermer l'Editeur Visual Basic
8. Ferme Excel en répondant Oui à la question Voulez-vous enregistrer les modifications apportées au classeur de macros
personnelles.
9. Ré-ouvre Excel et vérifie que la macro InverseSelection est disponible dans Menu Outils/Macro/Macros.

"" a écrit dans le message de news: Ofn$
9. Double-clic sur InverseSelection pour inverser la sélection.

docm

ok, ça marche, j'ai eu un bug au début et puis ça marche, merci ;-)

seulement, lorsque je referme le classeur, si je réouvre Excel pour un autre
travail, la macro ne s'y trouve plus...
comment faire pour enregistrer quelque part, et pouvoir m'en resservir une
autre fois SVP ?
merci






1 2