Recherche cellule vide

Résolu
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009 - 18 févr. 2008 à 16:23
cs_Frederic45 Messages postés 60 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 30 mars 2010 - 19 févr. 2008 à 11:32
Bonjour , en regardant sur ce forum j'ai pu voir comment on faisait pour recherché une cellule vide et la remplir
le probleme c'est que j'ai essayé delefaire et ca ne marche pas
comme j'y connais rien du tout je ne sais pas ou j'ai pu me tromper

Sub macro1()


i = 12
While (cell(7, i) <> "")
i = i + 1
Wend
If cell(7, i).Value = "" Then
    cell(7, i) = cell(4, 4)

End Sub


merci pour votre aide


 

17 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 17:45
...

en fait j'ai ecrit ce bout de code directement ici a partir de ce que tu nous as donné au depart et j'ai pas fait attention a la fonction Cells qui ne s'ecrit pas cell donc :

Sub macro1()
Dim i As Long
i = 1
While i < 13
    If Cells(7, i).Value = "" Then
        Cells(7, i).Value = Cells(4, 4).Value
    End If
    i = i + 1
Wend
End Sub

au passage, je te deconseil cette methode pour ce genre de chose prefere le For Next.

Et puis comme tu ne l'as pas fait je vais donc remercier l'amis Jack pour avoir gentiment déplacé ce topic dans le bon theme. Salut et Merci Jack

Vala,

A+

PS n'oublie pas d'accepter la reponse
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 16:40
Salut,

essaye ca :

Sub macro1()
Dim i as longFor i 1 to 12 'pour i i jusqu'a 12If cell(7, i).Value "" Then  'si la cellule 7i  ""
    cell(7, i).value = cell(4, 4).value 'alors ecrit valeur de cellule 44 dans cellule 7i
Next i     'i suivant
End Sub

A+
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
18 févr. 2008 à 16:47
ca me met "erreur de compilation sub ou function non defini"

en fait ce que je veux faire c'est cherche une cellule vide dans une colonne. si elle est vide, elle prend la valeur d'une autre case, sinon on passe a la suivante toujour dans le meme colonne. enfin ca a pas l'ai trop compliqué mais je n'y arrive pas!!!
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 16:50
...oups

avec un end if ca marchera mieux^^

Sub macro1()
Dim i as longFor i 1 to 12 'pour i i jusqu'a 12If cell(7, i).Value "" Then  'si la cellule 7i  ""
    cell(7, i).value = cell(4, 4).value 'alors ecrit valeur de cellule 44 dans cellule 7i
End If
Next i     'i suivant
End Sub

ou pour repondre plus directement a ta question :

Sub macro1()
Dim i as long
i = 1
While i < 13
    If cell(7, i).Value = "" Then
        cell(7, i).value = cell(4, 4).value
    End If
    i = i +1
Wend
End Sub

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 févr. 2008 à 16:50
Salut
Le VB de Excel est du VBA --> Modif catégorie de la question

Manque un End If avant le Next i puisque tu es passé à la ligne après le Then

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 févr. 2008 à 16:53
Merde, 2 secondes de retard ...

Dans ton programme initial avec le While-Wend (instruction qui ne s'utilise plus beaucoup --> Do-Loop), tu as mis le Wend (rebouclage) avant ton test de cellule. Normal donc qu'il ne fonctionne pas.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 16:55
...

Au fait !!! tu n'es pas dans le bon theme !!! C'est du VBA excel ton code danc tu aurais du poster ici :

[infomsg.aspx Thèmes]

/ [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]

Fait gaffe la prochaine fois

A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 16:56
en retard aussi
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
18 févr. 2008 à 17:03
j'ai essayé les solutions proposées mais j'ai toujours la même erreur...et ca veut dire quoi exactement cette erreur?
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 17:12
...

fais un copier/coller de tout ton code et poste le ici pour que l'on voit ce qui ne vas pas

A+
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
18 févr. 2008 à 17:17
pour l'instant ya que ca
c'est un projet pour mes etudes et comme on a pas u de cours la dessus
j'essai petit a petit pour voir si ca marche. je me debrouille avec ce ke je trouve... enfin voila
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
18 févr. 2008 à 17:25
Ok ! ce que je t'ai donné doit fonctionner ! tu as peut etre une erreure de syntax ou autre qui provoque cette erreur. Sans le copier/coller exacte de ton code je ne peux pas faire grand chose.

A+
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
18 févr. 2008 à 17:35
Sub macro1()
Dim i As Long
i = 1
While i < 13
    If cell(7, i).Value = "" Then
        cell(7, i).Value = cell(4, 4).Value
    End If
    i = i + 1
Wend
End Sub

voila ce ke tout ce ke j'ai dans mon , ce qui correspond a une des solution que tu m'a donné
et ce me met toujours la meme erreur
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
18 févr. 2008 à 17:54
merci pour votre aide
0
cs_Frederic45 Messages postés 60 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 30 mars 2010
19 févr. 2008 à 10:26
Bonjour à tous

Si je peux me permettre de m'immiscer dans ce post "accepté".

La question est, pour moi, incomplète, désolé heycjuju. Il faudrait connaître le nombre de cellule(s) vide(s) ? 1 ou plusieurs. Les solutions apportées partent du principe qu'il y en a plusieurs, mais s' il y en a qu'une, on fait une boucle sur x cellules pour aller chercher ...... la première cellule (G1 dans notre exemple), dommage de perdre du temps. Dans le cas émis il y a 13 cellules, mais si il y en avait 1000, voire 10000 ou beaucoup plus.
Pour ma part, j'aurais pris la fonction "find" qui me semblerait plus adaptée et je pense plus rapide, si l'on veut changer la "cellule copiée" vers la cellule vide, voir la sub cell_vide_01 . Sinon, la solution la plus rapide(à vérifier) serait peut être la sub cell_vide_02 avec 1 seule ligne de code :

Sub cell_vide_01()
'cette solution recherche toutes les cellules vides
Dim c
With Worksheets("Feuil1").Range("g:g")
    Set c = .Find("", LookIn:=xlValues)
        firstAddress = c.Address
        Do
        'ici on modifie les références copiées          
Range("g" & c.Row).Value = Range("d4").Value
             Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
End Sub

Sub cell_vide_02()
    'Range("G:G") 'sélectionne de G1 à la dernière cellule pleine
    'Range("G1:G13") 'sélectionne de G1 à G13
    Range("g1:g13").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R4C4"
End Sub

Bonne journée à tous

Frédéric
0
heycjuju Messages postés 25 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 mai 2009
19 févr. 2008 à 10:44
les reponse données avnat mon permis d'avancer. Avec la réponse de bigfish_levrai ca me remplissait enitièrement la colonne. voila ce ke j'ai fait afin de remplir uniquement la premiere case vide trouvée

Dim i As Long
i = 11
Do
    i = i + 1
Loop While Cells(i, 7).Value <> ""
Cells(i, 7).Value = Cells(4, 4).Value

enfin voila j'ai tester a plusieurs reprises et ca fonctionne comme je voulais.
mais je testerai kan meme ta solution pour voir ce que ca donne
0
cs_Frederic45 Messages postés 60 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 30 mars 2010
19 févr. 2008 à 11:32
Re

Si tu veux uniquement la première cellule vide, je te propose ceci :

Sub cell_vide_01()
'cette solution sort à la première cellule vide
Dim c
With Worksheets("Feuil1").Range("g:g")
    Set c = .Find("", LookIn:=xlValues)
    Range("g" & c.Row).Value = Range("d4").Value
End With
End Sub

Mais la solution de bigfish_levrai est aussi valable

Bonne journée

Frédéric
0
Rejoignez-nous