Autres Une petite correction d'un code qui rempli les cellules vides

  • Initiateur de la discussion Initiateur de la discussion INFINITY100
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

INFINITY100

XLDnaute Occasionnel
Bonjours tout le monde

je viens vers vous pour une aide concernant mon code

En effet dans mon fichier j’ai un tableau qui se compose de 3 colonnes et 9 lignes hormis la ligne du titre qui est la ligne 1 avec quelques cellules remplies par un OK

Par ailleurs j'ai un code qui me rempli uniquement les cellules vides. Seulement ce code il ignore toujours les lignes d’avant le premier OK (Dans cet exemple les lignes ignorées sont la 2 et 3).

Or que moi je veux remplir toute les cellules vides soit avant ou après le OK

Donc ma question est toute simple que faudrait-il modifier dans ce code pour avoir le résultat souhaité

Merci à vous tous

Cordialement

Je joins le fichier pour y voir plus claire 😉

Et voici mon code en question :

VB:
Sub RemplirCelluleVide()

Dim Cell As Range
Dim Plage As Range
Dim InputValue As String

On Error Resume Next
InputValue = "P"
   With Worksheets("Essai")
   Set Plage = .Range(.Cells(10, 3), .Cells(.Rows.Count, 1).End(xlUp))
   For Each Cell In Plage
   If IsEmpty(Cell) Then
   Cell.Value = InputValue
   End If
  Next
 End With
End Sub
 

Pièces jointes

Bonjour INFINITY100,

ton fichier en retour. 🙂

code VBA :

VB:
Option Explicit

Sub RemplirCelluleVide()
  If ActiveSheet.Name <> "Essai" Then Exit Sub
  Dim InputValue$, cel As Range
  InputValue = "P": Application.ScreenUpdating = 0
  For Each cel In [A2:C10]
    If IsEmpty(cel) Then cel = InputValue
  Next cel
End Sub



remarque : si ton classeur contient une seule feuille, et que tu n'ajouteras pas d'autres feuilles ensuite, alors tu peux enlever le test de la 1ère ligne : If ActiveSheet.Name <> "Essai" Then Exit Sub

soan
 

Pièces jointes

Bonjour
VB:
Set Plage = .Range(.Cells(10, 3), .Cells(.Rows.Count, 1).End(xlUp))
l'erreur vient de là...
1° cells(10,3) tu commence à la ligne 10 j'aurais mis cells(2,1) 2éme ligne et 1ere colonne
2° Cells(.Rows.Count, 1).End(xlUp) dernière cellule vide de la colonne 1 soit A4
la dernière ligne étant vide elle ne sera jamais comptabilisée...
J'ai donc converti ton tableau en tableau structuré (insertion/tableau)
Ci joint le résultat

A+ François
 

Pièces jointes

Bonjour,
Une autre façon : j'ai nommé la plage (plage) ainsi si tu insères des lignes...le nom s'adaptera et il ne faudra pas changer le VBA.
Ton erreur venait du fait que "count" calcule le nombre de cellules non vides (dans ton cas 4 avec OK). Donc il partait de la quatrième ligne ce qui par hasard était la ligne du premier OK.
Bonne continuation
Chris
 

Pièces jointes

Bonjour,

@INFINITY100
Pour info : Le .End(SensDéplacement) s'arrête soit:
- à la première cellule vide dans le sens de parcours si ta première est remplie
- à la première cellule remplie si ta 1ère est vide ...
Lol
Il me semble que cette instruction ne s'arrête en fait jamais sur une cellule vide (sauf si elle est en bout de ligne ou de colonne, évidemment).
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
211
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
477
Réponses
14
Affichages
246
Retour