Forum Clubic

Probleme macro pour excel (Transfert de ligne dans un tableau) (page 2)

Alors j’ai cherché et essayé des choses mais sans succès.

Pourrait-tu m’aider pas à pas depuis le début.

Mon plus gros probleme est de définir la zone à copier qui est définie que lors qu’il y a “Terminé” en E.
Edité le 03/07/2010 à 20:39

Tu ne peux pas faire de copier sur une zone discontinue.
Donc il va falloir que tu prennes les lignes une par une, et que tu regardes si elles contiennent le mot Terminé pour décider ou non si copie. Ensuite tu passes à la ligne suivante.

Comme tu sais que le mot TERMINE se situe en colonne E, le mieux est de limiter ta recherche à cette colonne.
Pour le faire, tu as des tas de solutions. Tout dépend de ce que tu as fait avant
Tu peux la définir nommément
ex : set R = Range(“E1:E25”)
Si tu commences en haut de la feuille (E1) tu peux définir la dernière cellule avec la méthode que tu as utilsée pour te positionner lors de la copie (voir plus haut dans ce message 8 juin 18h39).
ex : set R = Range(Range(“E1”), range (“E100”).end(xlup))
Si ta zone de travail est déjà nommée (par ex MesDonnees) :
set R = range(“MesDonnees”).columns(5)
Ou si pas nommée :
set R = range(“A1”).currentRegion.columns(5)

Et après tu lances ta boucle
For each c in R
if c = “TERMINE” Then

etc.

Dans un premier temps, fais un simple Select dans ta boucle, avec un point d’arrêt sur la ligne suivante (ou alors exécute ton programme en Pas à Pas). tu pourras voir si ça fonctionne bien (la sélection doit s’arrrêter sur les cases marquées TERMINE).
Quand cette partie sera maîtrisée, tu pourras reprendre à la place du select la partie copie que tu as déjà testée plus haut.

encore une fois merci à toi de prendre du temps pour m’aider.

Sub Macro2()

Set R = Range(“F3:F40”)
For Each c In R
If c = “Terminé” Then
End If
Next

End Sub

Jen suis la et je n’ai pas d’erreur mais je suis pas sur que ce soit bon.

Oui, c’est bon à deux détails près :

  • dans ta boucle, il faut que tu mettes quelque chose, par exemple un select, et à terme toute ton action copy
    Set R = Range(“F3:F40”)
    For Each c In R
    If c = “Terminé” Then
    c.select (et tu mets un point d’arrêt sur cette ligne)
    End If
    Next

N’espère pas trouver ton mot TERMINE dans la sélection que tu fais (Range(“F3:F40”))

J’ai modifié quelque peut mon tableau depuis, c’est pour ca que c’est F j’essai ca se soir merci
Edité le 05/07/2010 à 10:35