Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

rapatrier des données d'une autre feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

criscris11

XLDnaute Accro
Bonsoir,
J'ai encore besoin de vos lumières pour un petit truc. Dans la feuille 2 de mon fichier, si une certaine cellule est différente de 0, j'aimerais récupérer les infos de la feuille 1. Ce sera plus simple en regardant le fichier.
Merci à tous et bonne soirée.
 

Pièces jointes

Re : rapatrier des données d'une autre feuille

Salut
Macro automatique faite avec les renseignement que j'ai pu trouver
Attention s'il existe plus d'une correspondance entre H11 et colonne T de l'autre feuille, seule la première sera prise en compte
A+
 

Pièces jointes

Re : rapatrier des données d'une autre feuille

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.
 
Re : rapatrier des données d'une autre feuille

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+
 
Dernière édition:
Re : rapatrier des données d'une autre feuille

Merci Gorfael pour tes précisions. Je te renvoies le fichier quelque peu modifié, pourrais tu reprendre le code (en fait faire le fusion entre ton premier et ton deuxième code car je m'emmêle un peu les pinceaux : je débute en VBA) et en attendant, je vais voir si j'y arrive tout seul mais c'est pas gagné.
Merci et au plaisir de te lire.
 

Pièces jointes

Re : rapatrier des données d'une autre feuille

gorfael, si ce n'est trop te demander je souhaiterais en fait récupérer les données que si dans les colonnes "type" apparaît "opex" : je ne sais pas si cela peut être plus facile pour toi.
Encore une dernière chose si tu peux commenter ton code de façon détaillée afin que j'apprenne à me servir du VB.
Merci encore.
 
Re : rapatrier des données d'une autre feuille

Salut
Avant de travailler sur le code :
Feuil1 :
Le rapatriement des données ne se fait que si opex apparaît en colonne C
Le nombre à rechercher est celui de la colonne U

=> Si (Feuil1."U" =Feuil2."H11")
Pour la première ligne rencontrée sur Feuil1
Feuil2 ligne 10 : J, K, L, M <= Feuil1 B, D, E, F si C="Opex"
Feuil2 ligne 11 : J, K, L, M <= Feuil1 H, J, K, L si I="Opex"
Feuil2 ligne 12 : J, K, L, M <= Feuil1 N, P, Q, R si o="Opex"

le tout commandé à chaque changement de cellule H11 sur feuille 2
C'est bien ce que tu veux ?
Tu parles d'autres valeurs dans un poste précédent ?

ce qui me gêne : ta colonne U est une valeur calculée => comme une valeur calculée n'est par définition pas unique, ça veut dire que si par hazard, et suivant la loi de Mrphy, ça t'arrivera forcément au moment le plus inoportun, tu as Didier ligne 3 et Pascal ligne 4 qui ont le même résultat en U, les lignes en J, K, L, M seront forcément et uniquement celles de Didier. Cells de Pascal n'apparaîtront jamais
Sauf si par exemple, on teste aussi la valeur H3 Feuil2, par rapport à A de Feuil1

A+
 
Dernière édition:
Re : rapatrier des données d'une autre feuille

Bonsoir Gorfael,
Merci de te pencher sur mon problème encore une fois.

Le rapatriement des données ne se fait que si opex apparaît en colonne C : non en fait pas uniquement la colonne C mais en colonne C, I, O etc... et ce jusqu'à la fin de mon tableau.

Sauf si par exemple, on teste aussi la valeur H3 Feuil2, par rapport à A de Feuil1 : oui si cela peut éviter les erreurs, c'est une solution.
Veux tu que je t'envoie un bout de mon fichier dans lequel est destiné ce code ?
Merci.
 
Re : rapatrier des données d'une autre feuille

salut
ça serait pas mal, au moins la 1ère ligne complêteque je fasse la macro sur l'ensemble des colonnes concernées

A+
 
Re : rapatrier des données d'une autre feuille

Bonsoir le forum
Bonsoir Gorfael et Criscris

Je te propose un fichier, si j'ai bien compris ce que tu veux. Il faut l'adapter pour la copie. Pour le lancer il faut cliquer sur le bouton "lance"

Si tu as des pb n'hesites pas

A+
 

Pièces jointes

Re : rapatrier des données d'une autre feuille

Bonsoir Gorfael, Eric,
Merci à vous deux pour vous être penché sur mon problème, car pour résumé j'ai environ 300 relevés annuels à faire (2 par personnes) et j'aimerais un peu automatiser tout çà. Au lieu de regarder dans la feuil2 à chaque personnes (et vu le nombre de colonnes, bon courage), je recherche à reporter les données de cette feuille suivant condition sur la feuille qui est destinée à être imprimée et archivée.
Je joins le fichier formaté comme dans mon fichier original et les explications sont en feuil3.
Si vous avez des questions, je suis à vous.
 

Pièces jointes

Re : rapatrier des données d'une autre feuille

criscris11 à dit:
Si vous avez des questions, je suis à vous.
Salut criscris11 et le forum
Plein de questions 🙂
Sur Feuil3, ça commence en H21 (cote d'ivoire/nom Prénom 7) ?
Je commence la recopie en H21 ou H22 ? (pour l'instant, je vais commencer en H21, ce qui me parait le plus logique)

Tant qu'à faire autant prévoir le maximum que peut admettre la Feuil1 : ça serait bête d'être bloqué parce que t'en as un de plus que prévu, non ?

Concernant le déclenchement de la macro, c'est toi qui voit soit un change par rapport à I20 ou par rapport à C14 de la feuil2 (cela semblerait peut-être plus approprié, non ?).
Pour le déclenchement, Feuil2 C14 Parait plus mieux bien. Comme on travaille sur plusieurs feuille, ce sera une macro auto de ThisWorkBook.
Par contre, avec le numéro Opex, on recherche en Feuil1 colonne CK et on valide par Feuil1 D+E=Feuil3 C11+C12

Autre question : on fait quoi en cas d'Opex=0 ?
-Pour moi, on efface les résultats précédents
Dans le même ordre d'idée, comme c'est validé par liste, je considère que les erreurs sont impossibles 🙂
A+
 
Dernière édition:
Re : rapatrier des données d'une autre feuille

Bonsoir Gorfael,
Sur Feuil3, ça commence en H21 (cote d'ivoire/nom Prénom 7) ?
Je commence la recopie en H21 ou H22 ? (pour l'instant, je vais commencer en H21, ce qui me parait le plus logique) : oui effectivement.

Tant qu'à faire autant prévoir le maximum que peut admettre la Feuil1 : ça serait bête d'être bloqué parce que t'en as un de plus que prévu, non ? : oui, on peut prévoir.

Pour le déclenchement, Feuil2 C14 Parait plus mieux bien. Comme on travaille sur plusieurs feuille, ce sera une macro auto de ThisWorkBook : oui cela me paraît le plus approprié.

Par contre, avec le numéro Opex, on recherche en Feuil1 colonne CK et on valide par Feuil1 D+E=Feuil3 C11+C12 : je préfererai garder la formule exixtante en C11 et C12 car quand j'imprime mes feuilles, je sélectionne le nom dans la liste de validation, imprime la feuil2 et la feuil3.

Autre question : on fait quoi en cas d'Opex=0 ?
-Pour moi, on efface les résultats précédents : oui on peut effacer les résultats précédents.

Merci à toi et à bientôt.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
227
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…