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
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Concatener deux cellules excel - Guide
- Word et excel gratuit - 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
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
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
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
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