Sélection variale de lignes entières

Bonjour.

Après moultes tentatives de recherches infructueuses, j'ai décidé de me lancer

J'espère que le sujet n'a pas déjà été abordé.

Voilà mon problème : Je veux pouvoir sélectionner (afin de supprimer) un nombre variable( et à priori inconnu) de lignes compris entre 2 lignes de références qui ne doivent pas être supprimées.

J'ai : 1 ligne complète que j'ai nommé resistancedébut (qui ne doit pas être supprimée mais qui peut bouger)

plusieurs lignes (dont à priori je ne connais pas le nombre) qu'il faut que je selectionne afin de les supprimer

1 ligne complète que j'ai nommé Résistance( idem que la première)

Mon code est le suivant :

DerniereLigne = (Range("Résistance").Row)

ligne = DerniereLigne - 1

PremiereLigne = (Range("resistancedebut").Row)

ligne2 = PremiereLigne + 1

Range("DerniereLigne, DerniereLigne : PremiereLigne, PremiereLigne").Select

Et là, lorsque j'essaie de "compiler", il me sort un message d'erreur : "Erreur définie par l'application ou par l'objet"

Si je mets simplement :

Range ("Résistance, Résistance:resistancedebut,resistancedebut").Select

Il me sélectionne bien les lignes...MAIS il me sélectionne aussi mes lignes de référence dont j'ai besoin par la suite...Donc ce n'est pas bon...

Auriez vous une idée de ce qu'il se passe? Si quelqu'un peut m'éclairer un peu, ça me soulagerait d'un poids que je traine depuis maintenant 8h ce matin

Je vous remercie par avance.

Bonjour et bienvenue,

Mets ton code complet ou ton fichier en ligne ce sera plus facile de te donner une solution.

Amicalement

Dan

Bonjour

Mon code est "entier". En fait, sur ma grille Excel, j'ai juste collé un bouton.

En double cliquant dessus, ca m'ouvre VB avec

Private Sub CommandButton10_Click()

End Sub

Dans lequel j'ai intégré :

DerniereLigne = (Range("Résistance").Row)

ligne = DerniereLigne - 1

PremiereLigne = (Range("resistancedebut").Row)

ligne2 = PremiereLigne + 1

Range("DerniereLigne, DerniereLigne : PremiereLigne, PremiereLigne").Select

Donc à priori il y a tout.

Re,

Essaie ceci

Private Sub CommandButton10_Click() 
Dim DerniereLigne as integer, PremiereLigne as integer
DerniereLigne = (Range("Résistance").Row)  
PremiereLigne = (Range("resistancedebut").Row)  
Rows(PremiereLigne +1 & ":" & DerniereLigne -1).select
End Sub

Si ok, remplace SELECT par DELETE pour supprimer

Amicalement

Dan

Edit Dan : si ton pb est teminé, n'oublie pas de mettre RESOLU. Explication ici --> https://forum.excel-pratique.com/viewtopic.php?t=13

Nickel, merci beaucoup pour la rapidité et l'efficacité!

Petite question Annexe cependant, les & ainsi que le ":" servent à quoi?

Au départ, j'avais essayé avec Dim DerniereLigne As Long

Pourquoi cela ne marchait-il pas? Quelle est la différence avec integer

En tous cas, ca fonctionne nickel, encore merci!

re,

Petite question Annexe cependant, les & ainsi que le ":" servent à quoi?

Si tu connaissais les lignes (ex 1 à 4), l'instruction ROWS serait celle-ci --> Rows(1:4).select

Dans ton cas, ce sont tes variables qui les définissent. D'où ROWS(1:4) devient Rows(PremiereLigne & ":" & DerniereLigne).

1. Le & sert à lier les deux variables avec le ":"

2. Le ":" doit être mis dans l'instruction ROWS puisque tu vas prendre plusieurs lignes pour les supprimer.

Dim DerniereLigne As Long

Cela doit fonctionner aussi avec LONG. Tu dois le mettre à la place de INTEGER si le nombre de lignes à supprimer est supérieur à 32767. LONG te permet d'aller jusque 2147483647 de lignes.

L'intérêt de INTEGER réside dans l'allocation de mémoire allouée par exécuter le code. Donc ici exécution plus rapide du code.

Amicalement

Dan

Rechercher des sujets similaires à "selection variale lignes entieres"