Macro excel valeur dépendant de deux conditio

Fermé
Qorcin - 19 août 2010 à 20:31
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 - 23 août 2010 à 14:14
Bonjour,
voila mon probleme,
je souhaiterai faire une macro VB permettant de selectionner une cellule dependant de deux conditions.
Par exemple une valeur de la colonne A (par exemple valeur 7) et la valeur associer dans la colonne B (dans ce cas le nombre "2") et copier la valeur de la colonne C associer (dans ce cas "1272550" ) sur une autre feuille?

Sample# Cycle # Time
1 1 1271650
2 1 1271800
3 1 1271950
4 1 1272100
5 1 1272250
6 2 1272450
7 2 1272550
8 2 1272700
9 2 1272900

Merci de vos réponses


A voir également:

6 réponses

bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
20 août 2010 à 11:18
Tout simplement avec des if :

For ligne = 0 to ....
If Range("A" & ligne).value = 7 And Range("B" & ligne).Value = 2 then
Range("C" & ligne).Copy
Sheets(..).Range(..).Select
ActiveSheet.Paste
End if
...
Next ligne
0
Merci pour votre réponse, mais voici la macro tel que vous me l'avez suggéréé :

Sub suppr()
For ligne = 0 To 63000
If Range("A" & ligne).Value = 7 And Range("C" & ligne).Value = 2 Then
Range("D" & ligne).Copy
Sheets(2).Range("A1").Select
ActiveSheet.Paste
End If
Next ligne
End Sub

et ca me mets error method range of object'_global failed?? pouvez vous m expliquer pourquoi?
desolé je suis novice
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
20 août 2010 à 16:45
Bonjour,

Il y a juste une petite erreur, il faut commencer à 1 et non pas à 0 ici :
For ligne = 1 To 63000

A+
0
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
23 août 2010 à 09:38
à oui désolé :/
0
merci pilas!
mais mintenant j'ai une erreur au niveau de la ligne 5 (methode select range a échoué)?????

Sub suppr()
For ligne = 1 To 63000
If Range("A" & ligne).Value = 7 And Range("C" & ligne).Value = 2 Then
Range("D" & ligne).Copy
Sheets(2).Range("A1").Select
ActiveSheet.Paste
End If
Next ligne
End Sub
0
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
23 août 2010 à 09:57
Sub suppr()
Dim ligne as long

With Sheets(1)
For ligne = 1 To 63000
If .Range("A" & ligne).Value = 7 And .Range("C" & ligne).Value = 2 Then
.Range("D" & ligne).Copy
Sheets(2).Select
Range("A1").Select
ActiveSheet.Paste
End If
Next ligne
End With

End Sub
0
Merci beaucoup!!!
tt marche nikel!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cousinhub29 Messages postés 977 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 21 décembre 2024 348
23 août 2010 à 12:59
Bonjour,

Hiiiiiiiiii

Pourquoi continuer la boucle jusqu'à 63000.......??????

Euh, une méthode Find, plus FindNext????

Sub qorcin()
Dim FirstAddress As String
Dim C As Range
With Sheets("Feuil1").Columns(1)
    Set C = .Find(7, LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then
        FirstAddress = C.Address
        Do
            If C.Offset(, 1).Value = 2 Then
                C.Offset(, 2).Copy Sheets("Feuil2").Range("A1")
                Exit Do
            End If
            Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Address <> FirstAddress
    End If
End With
End Sub


Bonne journée
0
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
23 août 2010 à 13:40
oui c'est vrai, ou alors mettre
ligne_max = Rows(63000).End(xlUp).row
For ligne = 1 to ligne_max ...
mais ça sert a rien de fair eun for jusqu'à 63000^^
0
cousinhub29 Messages postés 977 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 21 décembre 2024 348
23 août 2010 à 13:46
Re-,

Effectivement, mais tu devrais sortir de la boucle, dès que tu as tes conditions de remplies...
Et également, évite les Select, cela fait gagner du temps....

Sub suppr()
Dim ligne as long

With Sheets(1)
    For ligne = 1 To [A65000].End(xlUp).Row
        If .Range("A" & ligne).Value = 7 And .Range("C" & ligne).Value = 2 Then
            .Range("D" & ligne).Copy Sheets(2).Range("A1")
            Exit For
        End If
    Next ligne
End With
End Sub


Bonne journée
0
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
23 août 2010 à 14:14
au départ, je pensais qu'il voulait faire la copie pour toutes les lignes contenant...
Mais c'est vrai que s'il y a une seule cellule, il faut sortir de la boucle.
Je ne connaissais pas cette syntaxe pour le .Copy ! ^^
ou sinon on peut aussi faire (si il n'y a que la valeur qui nous interresse) :
Sheets(2).Range("A1").Value = .Range("D" & ligne).Value
0