Problème copier/coller selon une valeur précise

Résolu
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013 - 22 juin 2012 à 09:39
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013 - 22 juin 2012 à 15:41
Bonjour à tous,

J'ai un petit problème avec mon code, je veux effectuer un copier coller de la feuille 1 à la feuille "test" mais uniquement lorsque dans la feuille d'origine la valeur de la cellule ds la colonne E = "X"

mon code ne tient pas compte de cette valeur et copie tout je ne trouve pas l'erreur

Sub transfert()


Const NomFO = "Feuil1"
Const NomFD = "test"

Const CellD = "B5"

Dim lifin As Long

ActiveWorkbook.Save

For i = 1 To 84

lifin = Range("A1").SpecialCells(xlCellTypeLastCell).Row


If Sheets(NomFO).Range("E" & i, "E" & i) = "X" Then

Sheets(NomFO).Range("B4:E" & lifin).Copy Sheets(NomFD).Range(CellD)

ElseIf Sheets(NomFO).Range("E" & i) <> "X" Then

End If

Next i

End Sub


merci d'avance

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 11:56
Si toutefois, tu es maintenant "en meilleure condition" pour t'éveiller à VBA :
Regarde ce que ferait ceci :
Dim plage As Range, lifin As Long
With Sheets("Feuil1")
  lifin = .Cells.SpecialCells(xlCellTypeLastCell).Row
  For i = 1 To lifin
    If UCase(.Range("E" & i)) = "X" Then
      If plage Is Nothing Then Set plage .Range("E" & i) Else Set plage Union(plage, .Range("E" & i))
    End If
  Next
  If Not plage Is Nothing Then plage.Copy Destination:=Sheets("Test").Range("B5")
End With

(juste pour le cas où)





________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 09:48
Bonjour,
et si tu te concentrais un peu et t'appliquais à savoir le sens de tes instructions ?
1)
Range("E" & i, "E" & i) est .... tout simplement ... Range("E" & i) !
et donc :
ElseIf Sheets(NomFO).Range("E" & i) <> "X" Then
ne répond à aucune logique ni nécessité !
2)
Sheets(NomFO).Range("B4:E" & lifin).Copy
va copier quoi, d'après toi, sinon toute la plage Range("B4:E" & lifin) à partir de la cellule B5 de ton autre feuille !
Réveille-toi un peu, s'il te plait.
0
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013
22 juin 2012 à 10:17
j'ai corrigé le reste mais concernant la condition ="X" je ne sais pas comment faire

désolé mais je suis débutante ...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 10:22
désolé mais je suis débutante

Mais ...
1) c'est du niveau débutant ! Et je t'ai dit quel était le seul critère de cette expression conditionnelle
2) j'ai également appelé ton attention sur ce que tu copiais. Ouvre donc s'il te plait (surtout si tu es débutante) ton aide VBA sur la méthode Copy (rubrique Range.Copy) et lis.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 10:29
Et ouvre également ton aide VBA sur le mot Range, hein,
Car je vois deux raisons pour ne pas écrire ce que tu as écrit :
Range("E" & i, "E" & i)
!!!
qui ne correspond à aucune notation possible pour l'objet Range.
Or, vouloir travailler avec VBA/Excel sans même s'intéresser à cette notation, cela équivaut à vouloir traverser la manche à la nage sans avoir appris lkes rudiments de la nage !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013
22 juin 2012 à 10:36
en effet c'est une grosse erreur de ma part mais vous n'êtes pas obligé d'être désagréable désolé mais si je vais sur les forums c'est aussi pour apprendre !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 10:40
Si te montrer tes erreurs (ce que j'ai fait) est pour toi : "être désagréable", tu "feras" dorénavant sans moi. Désolé et bonne chance.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013
22 juin 2012 à 10:44
me montrer les erreurs m'a permis d'améliorer le code sur ce point je suis ok

c'est dans la façon de le dire "réveille toi"

ce n'est pas grave

bonne journée à vous aussi
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2012 à 11:30
Je t'ai demandé de "te réveiller" car tu ne l'étais pas suffisamment et que certaines choses "sautaient" aux yeux, pour peu qu'on en analysât et comprît le sens et la portée (de ce que tu écrivais).
Si probl-ème résolu ===>> clique sur tag "réponse acceptée" pour libérer ce sujet (sans vouloir te "vexer" d'avoir à te demander de déclencher ce réflexe !)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
violette16 Messages postés 8 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 28 février 2013
22 juin 2012 à 15:41
ça marche en faisant cela :
Sub transfert()
Dim lifin As Long, i As Long, j As Long

j = 4 ActiveWorkbook.Save
lifin = Sheets("feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Row
For i = 1 To lifin
    If Sheets("feuil1").Range("E" & i).Value = "Input" Then
       
        Sheets("feuil1").Range("B" & i).Copy Sheets("test").Range("B" & j)
        Sheets("feuil1").Range("D" & i).Copy Sheets("test").Range("C" & j)
        
       j = j + 1
       
    End If
Next i

end sub


merci de votre aide
0
Rejoignez-nous