Ca me saoule VBA

jenclodedusse Messages postés 3 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 23 décembre 2004 - 22 déc. 2004 à 16:55
jenclodedusse Messages postés 3 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 23 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.

Je sais pas si j'étais assez clair.

Donc, voilà, si quelqu'un pouvait m'aider.

3 réponses

cs_DArkirA Messages postés 3 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 22 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


AkirA le Sombre
:clown)
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 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...)

tu devrais y arriver t'es pas si mal parti

madbob
0
jenclodedusse Messages postés 3 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 23 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.
0
Rejoignez-nous