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
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
A voir également:
- Macro excel valeur dépendant de deux conditio
- Liste déroulante excel - Guide
- Formule excel - Guide
- Deux comptes whatsapp - Guide
- Déplacer une colonne excel - Guide
- Fusionner deux fichiers excel - Guide
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
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
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cousinhub29
Messages postés
643
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
24 mars 2023
325
23 août 2010 à 12:59
23 août 2010 à 12:59
Bonjour,
Hiiiiiiiiii
Pourquoi continuer la boucle jusqu'à 63000.......??????
Euh, une méthode Find, plus FindNext????
Bonne journée
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
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
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^^
ligne_max = Rows(63000).End(xlUp).row
For ligne = 1 to ligne_max ...
mais ça sert a rien de fair eun for jusqu'à 63000^^
cousinhub29
Messages postés
643
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
24 mars 2023
325
23 août 2010 à 13:46
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....
Bonne journée
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
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
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
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
20 août 2010 à 15:47
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
20 août 2010 à 16:45
Il y a juste une petite erreur, il faut commencer à 1 et non pas à 0 ici :
For ligne = 1 To 63000
A+
23 août 2010 à 09:38