Fonction si et boucle vBA

[Résolu]
Signaler
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour,<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>








 Je débute en vba et je voudrais réaliser une fonction si, ce doit être certes très simple mais après plusieurs tentative rien ne marche et je ne comprends rien !!!






 






Donc en fait je voudrai faire :






 






Si ma cellule Z1 est égale à « yes » alors toute la ligne doit etre collée sinon on ne la copie colle pas.





Et je voudrai que cela s’effectue en boucle pour toutes les lignes.






 






(en fait je veux copier coller toutes les lignes d'un fichier qui on "yes" dans la colonne z;

Merci pour votre aide !!!

19 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Dans ce cas place le bouton puis double clique dessus.

Il ne te resteras plus qu'a coller ton code dans l'événement Click du bouton.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Regarde ceci

Dim i As Integer
'ATTENTION BOUCLE SUR TOUTE LES
'LIGNES DE LA COLONNES Z de 1 à 250
For i = 1 To 250
   'sil elle n'est pas vide
   If Not IsEmpty(Range("Z" & CStr(i))) Then
       If UCase$(Range("Z" & CStr(i)).Value) = "YES" Then ce.EntireRow.Copy('DEstination)
       'copier coller OUI mais ou????
   End If
Next, ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

Merci bcp jrivet !!!


 


coller sur une autre feuille du classeur : qui s'appelle RFQ 
moi je le collais comme ca :
    Sheets("RFQ").Select
    Range("A1").Select
    ActiveSheet.Paste


et de cette manière tu ne crois pas que ca risque d'etre très long et d'alourdir le code ?
ne vaudrait il pas mieux faire :
coller tous sauf colonne z different de yes ?

désolé de ne pas avoir demander avnt mais  je viens d'y penser ....
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re, Regarde plutôt le paramètre destination de la méthode Copy de l'objet Range

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Salut,
Teste ton idée!!! Tu as toutes les pistes pour le faire...
Et surtout si tu trouve n'oubli pas de valider la ou les réponses qui t'ont aidés. et de mettre la solution bien évidemment.

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- Le bon t
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

je teste ce script mais à chaque fois cela me marque "erreur de compilation next sans for" ....
je ne comprends vraiment pas puisque j'ai un For j'ai essayé de changer de place le next ou de changer de module et tout recommencer mais rien à faire ce message revient toujours... 
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Redonne EXACTEMENT le code que tu utilises, je suppose qu'un If n'est pas fermé, ou quelques chose dans le genre.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

re,

voila le code:

sub macro1()

Dim i As Integer
For i = 1 To 450
  
   If Not IsEmpty(Range( "Z" & CStr(i))) Then
       If UCase$(Range("Z" & CStr(i)).Value) = "YES" Then
ce.EntireRow.Copy("feuil3")
      
   End If
Next

end sub
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,

bien vu

[../auteur/JRIVET/89254.aspx jrivet]

^^



[../auteur/LOULOU411/1273472.aspx loulou411]

tu pourrais te relire quand même

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
> [../auteur/PCPT/401740.aspx PCPT]: Merki. je me suis dis qu'il avais utilisé mon code... donc.
> : por ton problème essaie ceci. mais cela ne changera pas grand chose dans le sens ou il faut mettre qqchose pour copier

Dim i As Integer
For i = 1 To 450
  
   If Not IsEmpty(Range( "Z" & CStr(i))) Then
       If UCase$(Range("Z" & CStr(i)).Value) = "YES" Then
ce.EntireRow.Copy("feuil3")
       End If
   End If
Next
@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

loulou est une fille !!! pas un homme ... oui je sais mon profil porte a confusion ...
bref ce n'est pas le sujet...
 bon honnetement je te remercie vraiment jrivet mais j'avai deja essayé le deuxieme end if et cela na rien changé au problème j'ai toujours mon erreur de next sans for.

sincerement je comprends rien à vba c'est vraiement la catastrophe je suis obligé de l'utiliser à mon travail mais j'ai aucune formation la dessus et malgré tous les tutoriels que j'ai pu lire , les forums et vba pour les nuls .. je ne comprends toujours pas .. pour moi tous ces codes c'est du chinois !!!

bref je desespère et je suis désolé de ne pas comprendre ce que vous me dites. merci bcp pour votre aide je suis sur que ca en aurait aidé beaucoup mais en fait je crois que je suis vraiement trop nul .....
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Oups excuse moi mademoiselle (madame)
Mais il est toujours bon de le savoir.

Alors reprenons, pour essayer d'avancer.

Est ce que tu as compris ce que faisait le petit bout de code que je t'ai donné?

Si vraiment tu as un problème de compréhension, envoie l'excel avec un descriptif DETAILLE de ce que tu souhaites (j'ai un peu de temps, alors je pourrais peu etre essayer de faire qqch pour t'expliquer plus en détails) mail: epsylon9 @ gmail point com

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

merci jrivet je contacte sur ton mail pour t'expliquer plus en détail ou j'en suis !!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Bon continuons ici. J'attendais le fichier XLS mais ce n'est pas grave on va d'abord essayer d'avancer sans.

Alors essaie ceci en espérant que ce soit asser commenté.
NOTE: Cstr(i) convertit i (un entier) en chaine de caractère
donc "Z" & CStr(i) <gras>"Z2" si i 2</gras>
Dim i As Integer
'DestLigne = Ligne de destination
'dans la feuille 3
Dim DestLigne As Long
   DestLigne = 1
   'De la ligne 1 à 450
   For i = 1 To 450
       'si la cellule Zi (donc Z1, Z2 .... Z450 n'est pas vide
       If Not IsEmpty(Range("Z" & CStr(i))) Then
           'Si la valeur de la cellule Z1, Z2, .... Z450 est yes (ou yEs, ou yes, ou YeS)
           'bref on n'est pas sensible à la casse
           If UCase$(Range("Z" & CStr(i)).Value) = "YES" Then
               'on copie toute la ligne dans la feuille 3 à la ligne DestLigne
               Call Range("Z" & CStr(i)).EntireRow.Copy(ActiveWorkbook.Worksheets("feuil3").Range("A" & CStr(DestLigne)))
               'On incrément Destligne pour le prochain passage
               DestLigne = DestLigne + 1
           End If
       End If
   Next , ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

ok merci je comprends bcp mieux ce que je fais ..

bon maintenant cane m'affiche aucune erreur ... ce qui est un bon debut pour moi !
pare contre rien ne se passe , je pense que je ne dois pas me positionner sur la bonne feuille de départ à la base , non ?
parceque moi j'enregistre direcement la macro sur la feuille en question et parès je met le texte , peut etre n'est ce pas suffisant ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Il te reste à définir correctement QUAND tu souhaites faire cette copie pour savoir exactement ou mettre le code.

Et ce que tu veux le faire à l'ouverture du classeur, ou bien alors de l'appui sur un bouton etc.

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

Salut ,

je voudrais appuyer sur un bouton
Messages postés
17
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2008

ca marche !!!! merci bcp pour ton aide précieuse et ta  patience  jrivet !!!

@@+++
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
pas de quoi. @+ sur le forum: Ju£i€n
Pensez: Réponse acceptée