Recherche cellule vide

Résolu
Signaler
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010
-
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

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
...

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
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
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+
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

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!!!
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
...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+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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.
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
...

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+
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
en retard aussi
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

j'ai essayé les solutions proposées mais j'ai toujours la même erreur...et ca veut dire quoi exactement cette erreur?
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
...

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

A+
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

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
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
11
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+
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

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
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

merci pour votre aide
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010

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
Messages postés
25
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 mai 2009

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
Messages postés
60
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
30 mars 2010

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