Re : rapatrier des données d'une autre feuille
criscris11 à dit:
Bonjour Gorfael,
Merci pour ta réponse que j'accepte avec plaisir. En fait dans mon fichier, les données sont remplies sur une plage de cellules beaucoup plus grande que dans le fichier que j'ai posté. Donc j'essaie d'adapter ta macro en rajoutant les lignes de commandes pour les autres cellules : je fais un copier-coller de
Range("J12") = .Range("N" & Cel.Row)
Range("K12") = .Range("P" & Cel.Row) Range("L12") = .Range("Q" & Cel.Row)
Range("M12") = .Range("R" & Cel.Row)
en changeant les valeurs correpondantes à chaque fois. Dis-moi si c'est bon comme çà :
Range("J13") = .Range("T" & Cel.Row)
Range("K13") = .Range("V" & Cel.Row) Range("L13") = .Range("W" & Cel.Row)
Range("M13") = .Range("X" & Cel.Row)
N'y as t'il pas un moyen plus simple de procéder ?
Merci à toi et bonne journée.
Salut
Si il y a moyen, mais vu le mombre de possibilités demandées, je ne me suis pas creusé la tête :
refaire une boucle prend du temps, et si c'est pas nécessaire, pourquoi le faire
for Y =0 to (le nombre de fois que ta séquence se répète - 1)
if . Range("N" & Cel.Row).offset(0,6*y)= "" then exit for
Range("J12").offset(y,0) = . Range("N" & Cel.Row).offset(0,6*y)
Range("K12").offset(y,0) = .Range("P" & Cel.Row).offset(0,6*y)
Range("L12").offset(y,0) = .Range("Q" & Cel.Row).offset(0,6*y)
Range("M12").offset(y,0) = .Range("R" & Cel.Row).offset(0,6*y)
Next Y
1 passage
J12 = (N+(6×0)) & ligne(cel)
2mepassage
J13 = (N+(6×1)) & ligne(cel) => T & ligne(cel)
3me passage
J14 = (N+(6×2)) & ligne(cel) => Z & ligne(cel)
etc... et si on trouve sune destination vide, on arrête et on sort de la boucle
si la valeur de la première cellule à transférer est nulle, on sort de la boucle
ou on peut tester en incluant le transfert :
for Y =0 to (le nombre de fois que ta séquence se répète - 1)
if . Range("N" & Cel.Row).offset(0,6*y)<> "" then
Range("J12").offset(y,0) = . Range("N" & Cel.Row).offset(0,6*y)
Range("K12").offset(y,0) = .Range("P" & Cel.Row).offset(0,6*y)
Range("L12").offset(y,0) = .Range("Q" & Cel.Row).offset(0,6*y)
Range("M12").offset(y,0) = .Range("R" & Cel.Row).offset(0,6*y)
endif
Next Y
on aura une ligne vide si la destination est vide
A+