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

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

  • Exemple.xlsm
    18.4 KB · Affichages: 6

soan

XLDnaute Barbatruc
Inactif
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

  • Exemple.xlsm
    18.4 KB · Affichages: 3

fanfan38

XLDnaute Barbatruc
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

  • Exemple.xlsm
    18.9 KB · Affichages: 5

CHRIS1945

XLDnaute Occasionnel
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

  • Exemple.xlsm
    17.9 KB · Affichages: 7

TooFatBoy

XLDnaute Barbatruc
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).
 

Discussions similaires

Statistiques des forums

Discussions
312 180
Messages
2 085 993
Membres
103 081
dernier inscrit
jeromeolivier.raymond@wat