Plage variable + ajout d'une nouvelle ligne

Bonjour,

Etant novice en vba, je fais appelle à vous, car je suis confrontée à une véritable casse-tête. 

J'aimerais corriger le code ci-dessous pour qu'il prenne en compte si de nouvelles lignes sont ajoutées. 

Sub testselectionvariable()
Dim Rng As Range
Set Rng = Range("D4:AH59")
Rng.Select
For Each Rng In Selection
If Rng = "" Then Rng = "0"
Next
End Sub

Idem pour celui-ci

Sub Selecclear_test()
Dim Rng As Range
Set Rng = Range("D4:AH59")
Rng.Select
For Each Rng In Selection
If Rng = "0" Then Rng.ClearContents
Next
End Sub

Quelqu'un peux-t-il m'aider, s'il vous plait ?

Merci
Windows / Edge 108.0.1462.76

2 réponses

  1. Bonjour 

    Elle vous le dira ou pas.

    Sybille8484:

    Sub testselectionvariable()
        Dim Rng As Range, Cel As Range, Derlig As Long
        
        On Error GoTo Fin
        Application.ScreenUpdating = False      'fige rafraichissement ecran pour plus de rapidite
        Derlig = Range("D" & Rows.Count).End(xlUp).Row  'derniere cellule non vide colonne D
        Set Rng = Range("D4:AH" & Derlig)
        For Each Cel In Rng
            If Cel = "" Then Cel = "0"
        Next
    Fin:
        Application.ScreenUpdating = True       'rafraichissement ecran Ok
    End Sub
    
    Sub Selecclear_test()
        Dim Rng As Range, Cel As Range, Derlig As Long
        
        On Error GoTo Fin
        Application.ScreenUpdating = False      'fige rafraichissement ecran pour plus de rapidite
        Derlig = Range("D" & Rows.Count).End(xlUp).Row  'derniere cellule non vide colonne D
        Set Rng = Range("D4:AH" & Derlig)
        For Each Cel In Rng
            If Cel = "0" Then Cel.ClearContents
        Next
    Fin: 'retablir le rafraichissement en cas d'erreur
        Application.ScreenUpdating = True   'rafraichissement ecran Ok
    End Sub
    
    
    
    1. Merci pour votre aide ^^ :) 

      Je test, et je reviens vers vous pour vous dire.

      Merci encore

    2. Merci pour le code. 

      J'ai testé, mais il ne prends pas toute la plage. il s'arrête à AH40

      Une idée ?

    3. @Sybille8484

      Bonjour,

      DAns votre code je prends la derniere cellule colonne D, mais quelle colonne peut etre la plus longue?

    4. @f894009

      Merci pour votre aide. Le code fonctionne parfaitement..

      Je devais juste remplir ma première cellule de la dernière ligne de la colonne D

      Merci beaucoup ????

    5. Bonsoir, 

      Pouvez vous m'expliquer comment adapter le code clearcontents à l'ensemble des feuilles de mon classeur Sheets(Array("JANV", "FEV", "MARS", "AVRIL",  "MAI", "JUIN", "JUIL", "AOUT", "SEPT",  "OCT",  "NOV", "DEC"))

      Car je n'arrive pas à l'appliquer à l'ensemble de mes feuilles.

      Pris séparément le code fonctionne en adoptant la dernier colonne pour les mois de 30 jours ("D4: AG") et le mois de février ("D4:AE). 

      Mais je ne parviens pas à créer qu'une seule macro pour l'ensemble du classeur. 

      En vous remerciant par avance 

  2. Contributeur

    bonjour,

    Cette suggestion ne te convient pas?

    1. Bonjour yg_be

      En faites, votre première solution était parfaite tant que je ne rajoutais pas de nouvelle ligne. 

      Comme expliqué, quand j'insère une nouvelle ligne le code ne prends pas en compte la nouvelle ligne... 

      Merci pour votre aide et vos conseils.

      La découverte du VBA est passionnante, j'ai hâte d'apprendre :)

    2. Contributeur
      @Sybille8484

      Ma suggestion, c'est de ne traiter que les lignes blanches.  Cela ne convient pas?