Plage variable + ajout d'une nouvelle ligne

Fermé
Sybille8484 - 18 janv. 2023 à 17:09
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 22 janv. 2023 à 15:34

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

A voir également:

2 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 janv. 2023 à 17:35

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

0

Merci pour le code. 

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

Une idée ?

0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Sybille8484
19 janv. 2023 à 10:55

Bonjour,

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

0
Sybille8484 > f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024
19 janv. 2023 à 20:21

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 ????

0

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 

0
yg_be Messages postés 23268 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 octobre 2024 Ambassadeur 1 544
18 janv. 2023 à 17:17

bonjour,

Cette suggestion ne te convient pas?

0

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 :)

0
yg_be Messages postés 23268 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 octobre 2024 1 544 > Sybille8484
19 janv. 2023 à 14:16

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

1