Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

plage de liste adaptable apres supression d'une ligne

  • Initiateur de la discussion lolo24
  • Date de début
L

lolo24

Guest
Bonsoir a tous

J'ai un probleme que je n'arrive pas a resoudre et j'espere que quelqu'un
pourra me venir en aide.
Le probleme est expliqué dans la piece jointe.
J'ai crée une liste avec pour plage d'entrée par exemple A7:A17, parce que les cellules de cette plage sont pleines.
J'ai cree une macro qui supprime la ligne correspondant a la selection que
je fais dans ma liste.
Si je supprime 3 lignes ma plage d'entrée devient A7:A14
Mais si je rajoute du texte en A15 A16 A17 la plage reste toujours A7:A14
et diminue au fur et a mesure de mes supressions de ligne.
Comment faire pour que ma plage d'entrée soit en fonction des cellules pleines de la colonne A et a partir de A7?
Help me!!lol
Merci d'avance
A bientôt

lolo24
 

Pièces jointes

  • Classeur1.zip
    9.2 KB · Affichages: 17
  • Classeur1.zip
    9.2 KB · Affichages: 16
  • Classeur1.zip
    9.2 KB · Affichages: 14
M

Monique

Guest
Bonjour,

Ces listes déroulantes, je ne sais pas.

Listes de validation de la barre de menu :
tu sélectionnes la cellule F2 puis
barre de menu - Données - Validation -
Autoriser "Liste " et dans la zone "Source", tu tapes cette formule :
=DECALER($A$7;0;0;NBVAL($A:$A))
ou bien :
=DECALER($A$7;;;NBVAL($A:$A))

Formule pour ta cellule B1 :
=EQUIV(F2;DECALER($A$7;0;0;NBVAL($A:$A));0)
ou bien :
=EQUIV(F2;DECALER($A$7;;;NBVAL($A:$A));0)
(si ta liste de validation est bien en F2)
 
L

lolo24

Guest
Bonjour monique
Merci pour ton aide, mais ces formules dans barre de menu - Données - Validation -Autoriser "Liste " et dans la zone "Source" ne m'efface pas des lignes! quand je clic par exemple sur aaaaa (1er) dans la liste cela ne m'efface pas la ligne contenant aaaaa, mais la cellule B1 est juste affecté du n° de ligne de aaaaa.
Je sais pas si je me fais bien comprendre.

Si tu as une autre solution!?clique sur la liste de mon fichier joint.
Merci quand même.

A bientôt
 
M

Monique

Guest
Bonjour,

N'y connaissant rien en macro, je t'ai donné le système pour avoir une liste de validation contenant toutes les données de la colonne A, qu'il y ait ou non suppression ou insertion de lignes.
Pour remplacer ta cellule B1, tu as une formule.
Et c'est tout ce que j'ai fait.
Tu ne pourrais pas lier ta macro à la liste de validation au lieu de la lier à la liste déroulante ?
 

Pièces jointes

  • ListeLolo.zip
    9.2 KB · Affichages: 21
L

lolo24

Guest
Bonjour et merci michel, pour ton aide
Je viens d'essayer ta macro:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig As Long
If Intersect(Target, Range("A7:A1000")) Is Nothing Then: Else
If IsEmpty(Target) Then: End

lig = Target.Row
ActiveSheet.Shapes("Drop Down 13").Select
With Selection
.ListFillRange = "$A$7:$A$" & lig
End With
Range("A1").Select
End Sub

Mais je ne vois pas la difference de resultat par rapport a mon fichier classeur1.Car apres effacement de quelques lignes,si je rajoute des données a la suite,elle n'apparaissent pas dans la liste deroulante!!?
J'ai peu etre raté un truc!!?
A+
lolo24
 
L

lolo24

Guest
Re merci monique,
mais F3 ne remplace pas tout a fait D1.Car D1 supprime la ligne correspondant a sa valeur.Et F3 affiche seulement le numero de la ligne sans l'effacer.

Sniffff
 
M

Monique

Guest
Re,

Tu transfères la formule de F3 en B1 et D1 te donnera le n° de la ligne

Ou bien carrément en D1 (et tu enlèves le contenu de B1 et C1 si tu n'en as pas besoin) :
=EQUIV(F2;$A:$A;0)
et tu auras directement le n° de la ligne.
 
L

lolo24

Guest
Merci Monique et michel.
Je viens de trouver dans le forum, un fichier (joint), qui fera l'affaire!
Merci quand même de votre aide,j'aurais quand même appris d'autres choses grace a vous.
A bientôt
lolo24
 

Pièces jointes

  • supprimer_ligne.zip
    12.6 KB · Affichages: 17
M

Michel_M

Guest
Re lolo, Monique

Ci dessous la macro rectifiée:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lig As Long
lig = Columns(1).Find("", [A7], , , xlByRows).Row
If Intersect(Target, Range("A" & lig)) Is Nothing Then: End
If IsEmpty(Target) Then: End

lig = Target.Row
ActiveSheet.Shapes("Drop Down 13").Select
With Selection
.ListFillRange = "$A$7:$A$" & lig
End With
Range("A1").Select
End Sub


Il n'empêche que je préfère une solution par formule que macro...

Bon appétit
Michel
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…