Déplacement de 1 cellule jusqu'à la fin de la plage utilisée

Bonjour,

Je souhaite adapter ce code de la plage C17:D17 jusqu'à la dernière ligne utilisée de mon classeur

If Range("D17") = "" Then
    Range("C17").ClearContents
End If

Est-ce que cela implique un ActiveSheet.UsedRange.Row.Count, la création d'une variable et d'une boucle While ?

où UsedRangeRowCount servirait à définir là où s'arrêter , et la variable remplacerait D17 par un Selection.Offset de 1 ?

Je ne souhaite pas forcément avoir de réponse mais un aiguillage sur la marche à suivre serait le bienvenu

Merci d'avance

Bonjour,

Edit : Je n'ai rien dis j'ai mal lu le sujet. Encore fatigué je crois.

Cdlt,

Bonjour,

Tu as l'air bien parti dans tes pistes de réflexion !

Je rajouterais un for... To, comme solution logique.

Et aussi, quand tu veux boucler, essaie d'utiliser la structure cells(17, 4) pour parler de D17. Les nombres sont vraiment pratiques à remplacer par des variables.

Si ton nombre de lignes est très conséquent, une boucle ne serait pas l'idéal et il vaudrait mieux travailler en mémoire.

Bonjour JoyeuxNoel, bonjour à tous

Le fichier va comporter -en fin de vie et usé jusqu'à l'os- 2000 lignes sur 30 colonnes

With Sheets("Feuil2")

Dim i As Integer

i = 1

    Do While Cells(i, 2) = ""     'Cellule B1
        .Range(Cells(i, 1)).ClearContents      'Cellule A1
    i = i + 1        'incrémentation de 1 ligne
    Loop

End With

J'ai tenté ceci sur une feuille vierge avec des données de A1 à B10 mais ça ne fonctionne pas... Je vais jeter un oeil du côté de For / To

Bonjour,

Une autre solution serai d'appliquer un filtre des cellules vides sur la plage, de sélectionner toutes les cellules visibles décalée d'une colonne et de nettoyer les cellules sélectionnées.

Je vous laisse éventuellement y penser et la traduire en VBA.

Cdlt,

Ergotamine,

Je me suis servi de l'enregistreur de macro sur une feuille vierge, plus qu'à mettre un UsedRangeRowCount

ActiveSheet.Range("$A$1:$B$4").AutoFilter Field:=2, Criteria1:="="
    Range("A4").Select
    Range("A4").Activate
    Selection.ClearContents
    ActiveSheet.Range("$A$1:$B$4").AutoFilter Field:=2
/AB
1

*moulinette filtre*

*moulinette filtre*

2

valeur

X
3

valeur bis

X'

4

valeur lambda

5valeur'Z

Cela va supprimer la ligne A4 car B4 est vide

Merci, cela fonctionne ! Je passe le sujet en résolu quand j'aurais trouvé/posté la méthode avec une boucle et Cells(x, y) sauf si quelqu'un veut la poster

Bonjour,

Un test à adapter ne sachant quelle valeur vous souhaitez effacer, ou ligne supprimer, je vous laisse adapter ce code :

Sub NET()
With ActiveSheet
    .UsedRange.AutoFilter Field:=3, Criteria1:="="
    .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)).SpecialCells(xlCellTypeVisible).ClearContents
    .AutoFilterMode = False
End With
End Sub

Cdlt,

1classeur1.xlsm (14.50 Ko)

Edit : Je pense qu'il serait pertinent de tester la solution de Joyeux Noël, elle pourrait être plus rapide en terme d’exécution.

Rechercher des sujets similaires à "deplacement fin plage utilisee"