heycjuju
Messages postés25Date d'inscriptiondimanche 30 septembre 2007StatutMembreDernière intervention11 mai 2009
-
18 févr. 2008 à 16:23
cs_Frederic45
Messages postés60Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention30 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)
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
heycjuju
Messages postés25Date d'inscriptiondimanche 30 septembre 2007StatutMembreDernière intervention11 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!!!
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.
heycjuju
Messages postés25Date d'inscriptiondimanche 30 septembre 2007StatutMembreDernière intervention11 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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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.
cs_Frederic45
Messages postés60Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention30 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
heycjuju
Messages postés25Date d'inscriptiondimanche 30 septembre 2007StatutMembreDernière intervention11 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
cs_Frederic45
Messages postés60Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention30 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