Macro: Detecter si une cellule est vide.HELP [Résolu]

Signaler
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
-
aurel7687
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
-
Bonjour a tous!

Je voudrai savoir si quelqu'un pourrait m'aider!!!

Voila je voudrai détecter si une cellule est vide. Si elle est vide, ca copie une cellule dedans. Si elle est pas vide, que ca descende d'une ligne, que ca detecte si elle est vide. Si elle est vide ,ca copie.......

Pouvez vous m'aider car ca fait plusieurs jours que j'y suis et je ne trouve pas!!

Merci d'avance.
Aurel

14 réponses

Messages postés
106
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2005

Un simple

i = 177
While (Cells(i,3) <> 0)
  i = i + 1
Wend
' ici i correspond à la première case vide
If (i <= 229) then
  Cells(i,3) = Cells(6,51)
End If


ne suffirait-il pas, parce que les GoTo c'est pas beau !

Sinon pour le range, le C en chaine de caractères ("C") aurait peut-être été mieux.

-------------------------------------------------
Débutant ... mais pas pour longtemps !
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 septembre 2004
1
petite correction :

if range(colonne & ligne).value =""
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
1
Heu, oui ca pourrait aller jpense mais comment lui dire "autrement tu vas a la ligne"?
Aurel
Messages postés
73
Date d'inscription
lundi 23 octobre 2000
Statut
Membre
Dernière intervention
16 mars 2008
2
Voilà une ligne qui permet de détecter si la cellule est vide
ActiveSheet.Cells(ligne, colonne) = ""
Ensuite, tu peux faire une petite boucle For...Next pour passer à la cellule suivante.

Voilà un bout de code qui regarde dans la première colonne de la feuille active pour chacune des 10 premières lignes. Si la cellule est vide alors il recopie la cellule d'à côté (2eme colonne) et ensuite il passe à la suivante.

For MyRow = 1 To 10 If ActiveSheet.Cells(MyRow, 1) "" Then ActiveSheet.Cells(MyRow, 1) ActiveSheet.Cells(MyRow, 2)
Next

Bon courage !
Messages postés
73
Date d'inscription
lundi 23 octobre 2000
Statut
Membre
Dernière intervention
16 mars 2008
2
houlà il y en a eu des messages entre temps !
Messages postés
20
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 septembre 2004
1
Por voir si une cellule est vide tu peux faire un test tout simple :

if range(colonne, ligne) ="" then
' tu copies ta cellule

'autrement tu va à la ligne suivante...

est-ce que ça te suffit?
Messages postés
20
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 septembre 2004
1
pour faire TRES simple :

for i=1 to lignefin ' tu mets la valeuir de la dernière ligne

if range(colonne & i).value= "" then
'tu fais ta copie

next i

j'ai pas vérifié, mais ça doit être bon...tu fais une boucle sur tes nbre de lignes et pour chaque ligne tu teste le contenu de ta cellule : si elle est vide tu copies, sinon tu incrémente ton numéro de ligne (avec "next i " qui équivaut à i = i+1) et ainsi de suite jusqu'à ta ligne finale
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
1
Bon voila mon code, ya une erreur mais laquelle?

For i = 177 To 229
If Range(C & i).Value = "" Then
Range("AY6").Select
Selection.Copy
End If

Next i
End sub

=> En fait mes cellules ou il faut que ce fasse le test sont les cellules de C177 à C229.

Aurel
Messages postés
73
Date d'inscription
lundi 23 octobre 2000
Statut
Membre
Dernière intervention
16 mars 2008
2
J'ai testé ça :

For i = 177 To 229
If Cells(i, 3) = "" Then
Cells(i, 3) = Cells(6,51)
End If

Next i
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
1
Bon ca marche tres bien. Sauf qu'il faut faut a mon avis rajouté une autre condition, pour pas que ca le copie partout ou c'est vide.
En fait, ce qui se passe avec ce code la, c'est que ca detecte bien les cellules pleines, mais que toutes les cellules restantes vides sont rempli! Alors que moi je voudrai que ca copie la cellule AY6 dans la premiere cellule vide entre C177 et C229!
Donc je pense qu'il faut rajouter une condition!

Désolé, mais je m'y connais pas tres bien, donc si vous pouviez m'aider encore une fois!!!!

Merci d'avance!!
Aurel
Messages postés
20
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 septembre 2004
1
si tu veux uniquement remplir la première cellule vide, tu peut faire quelque chose comme ça :

For i = 177 To 229
If Cells(i, 3) = "" Then
Cells(i, 3) = Cells(6,51)
goto ligne 00
End If

Next i

ligne 00:

'suite de ton programme....

comme ça dès que ta première cellule vide est remplie, tu va directement à la ligne 00 et tu sort de ta boucle...
Messages postés
20
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 septembre 2004
1
si ton problème est résolu, coche bien "accepter la réponse"...
Messages postés
106
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 janvier 2005

Oups,
<> ""
(et pas 0, tout le monde aura compris)

-------------------------------------------------
Débutant ... mais pas pour longtemps !
Messages postés
24
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
14 août 2009
1
Ok! Merci! Ca marche maintenant! Merci!
Bon courage!
Aurel