avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
13 mai 2007 à 03:13
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
13 mai 2007 à 17:22
Bonjour à tous.
Dans mon projet VB6 avec base de donnée excel, je voudrais qu'à l'ouverture du Form1, dans la colone A, dans les 20 premiere celules vide, qu'il inscrive les lettres "PB" et dans la Colone B, la valeur du Text1 = Range("A1") + 1.
Ex: Colone A = PB
Colone B = 0001
En ce moment, mon code est celui si:
Private Sub Form_Load()
Dim XlApp As Excel.Application
Dim WorkB As New Excel.Workbook
Set XlApp = New Excel.Application
XlApp.Visible = True
Set WorkB = XlApp.Workbooks.Open("C:\Documents and Settings\Jean-Marc\Bureau\Projet1.xls")
Text1 = Range("A1") + 1
Form1.Show
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 mai 2007 à 16:53
Ok, alors essaie comme ceci :
Private Sub Form_Load()
Dim XlApp As New Excel.Application
Dim WorkB As Excel.Workbook
Dim WorkS As Excel.WorkSheet
Dim i As Long, PLV As Long
XlApp.Visible = True
Set WorkB = XlApp.Workbooks.Open("C:\Documents and Settings\Jean-Marc\Bureau\Projet1.xls")
Set WorkS = WorkB.Sheets("Nom de ta feuille a travailler")
PLV = WorkS.Range("B65536").End(xlUp).Row + 1
For i = PLV To PLV + 20
' Text1 = Range("A1") + 1 ???????
WorkS.Cells(i, 1).Value = "PB"
WorkS.Cells(i, 2).Value = "'" & Format(Range("A1").Value + 1, "0000")
Next i
End Sub
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 mai 2007 à 10:57
Un petit bout de code
Private Sub Form_Load()
Dim XlApp As New Excel.Application
'Dim WorkB
As New Excel.Workbook 'FAUX, le New, vient avant, pour
l'appli
Dim WorkB As Excel.Workbook
Dim WorkS as Excel.WorkSheet
Dim i As Long
XlApp.Visible = True
Set WorkB = XlApp.Workbooks.Open("C:\Documents and
Settings\Jean-Marc\Bureau\Projet1.xls")
Set WorkS = WorkB.Sheets("Nom de ta feuille
a travailler")
For i = 1 To 20
' Text1 = Range("A1") +
1 ???????
WorkS.Cells(i, 1).Value = "PB"
WorkS.Cells(i, 1).Value = "'" & Format(i, "0000")
Next i
Form1.Show ' inutile, elle s'ouvre au
End Sub car t'es dans Form_Load
End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 mai 2007 à 10:58
Arf, mauvais copier coller
For i = 1 To 20
' Text1 = Range("A1") + 1 ???????
WorkS.Cells(i, 1).Value = "PB"
WorkS.Cells(i, 2).Value = "'" & Format(i, "0000")
Next i ' ^^ là, c'est pas 1 mais 2
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
Vous n’avez pas trouvé la réponse que vous recherchez ?
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 13 mai 2007 à 13:39
Salut mortalino,
en réalité, dans la célule A1 se trouve un numéro exemple : 00001.
Dans mon form, Text1 = Range ("A1")+1 : Donc 00002
Ce chiffre doit se mettre dans les 20 premieres cellule vides de la colone B et à coté dans la colone A il doit inscrire "PB"
En se moment, dans le code que tu m'as donné, il efface le numéro inscrit et le remplace par PB dans la celule A1, ainsi que de mettre le chiffre 00001 dans la celule B1.
Puis après j'ai une erreur sur Text1 = Range("A1") + 1 car il ne peux crémenter le text "PB".
Met il faut que dans les 20 premières celules vides dans la colone A = PB et a coté de PB dans la colone B, la sommes de la cellule A1 déja crémenté.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 mai 2007 à 17:22
Oui, ça peut aussi le faire.
Ce qu'il ne faut absolument pas faire, c'est une boucle style
For i = 2 To Range("A1").End(xlDown).Row + 1
Pourquoi, car à chaque fois, il va procéder à la recherche de la dernière cellule à chaque passage de la boucle, et ça bouffe des ressources inutilement.
De plus, il vaut mieux
Range(" A65536 ").End(xlUp).Row + 1
que
Range("A1").End(xlDown).Row + 1
Pour la smple et bonne raison, que si dans ta colonne tu as une case vide, puis tes données repartent, ça fausse tout
@++
<hr width ="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~