jenclodedusse
Messages postés3Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention23 décembre 2004
-
22 déc. 2004 à 16:55
jenclodedusse
Messages postés3Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention23 décembre 2004
-
23 déc. 2004 à 08:39
J'en ai vraiment marre de VBA.
je dois faire un programme facile pour mon taffe (je ne suis tout de même pas prohrammeur ou informaticien), et je galère comme un ane.
Je vous pose mon prog (la partie qui bogue totale) :
Private Sub CommandButton4_Click()
Dim i, j As Double
Dim x As String
x = ComboBox5.Value
userform1.Hide
Worksheets("doc constructeurs").Select
Worksheets("doc constructeurs").Visible = True
Range("A2").Value = x
For i = 1 To 400
Range("K" & i).Select
If ActiveCell.Value = x Then
Rows("i").Select
Selection.Copy
j = i + 3
Sheets("résultats").Rows("j:j").Select
ActiveSheet.Paste
End If
ActiveCell.Offset(1, 0).Select
Next
For Each c In SelectionIf Application.CountA(c.EntireRow) 0 Then Rows(c.Row).RowHeight 0
Next c
End Sub
en fait, j'ai des données sur une page excel. Je regarde si mes valeurs de ma colonne C sont identiques à une valeur d'un combobox. Si c'est le cas, je veux copier toute ma ligne sur une nouvelle page excel. Ensuite, je retourne sur ma première page et je passe à la ligne suivante. Si elle est bonne, je sélectionne la ligne que je copie et que je colle en dessous de l'autre ligne de l'autre feuille.
cs_DArkirA
Messages postés3Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention22 décembre 2004 22 déc. 2004 à 17:39
Ca devrai fonctionner :
Private Sub CommandButton4_Click()
Dim i, j As Double
Dim x As String
x = ComboBox5.Value
j = 1 'la première ligne correspondante sera donc collée à la ligne 1 de la feuille "résultats"
Worksheets("doc constructeurs").Select
For i = 1 To 400 'attention : les lignes de 1 à 400 seront testées (à changer si besoin)
Range("C" & i).Select 'teste la colonne C
If ActiveCell.Value = x Then
Rows(i).Select
Selection.Copy
Sheets("résultats").Select
Rows(j).Select
ActiveCell.PasteSpecial
j = j + 1
Worksheets("doc constructeurs").Select 'retourne sur la bonne feuille pour continuer
End If
Next
End Sub
madbob
Messages postés285Date d'inscriptiondimanche 14 décembre 2003StatutMembreDernière intervention13 mars 2012 22 déc. 2004 à 17:45
Ca me semble pas juste d'écrire
...rows("i") dans ce cas i est interprété comme " i" et non comme la valeur au moment du passage dans la boucle.
(un indexe est attendu en l'occurence ton compteur i...)
jenclodedusse
Messages postés3Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention23 décembre 2004 23 déc. 2004 à 08:39
merci beaucoup, ca fonctionne parfaitement.
En fait, comme disait madbob, mon erreur provenait en partie de mon rows("i") qui était interprété comme "i" et pas sa valeur.
En tout cas, milles merci de s'être penché sur mon cas aussi rapidement.