XL 2016 Créer une boucle pour copier coller des données selon une cellule

Cotriana

XLDnaute Nouveau
Bonjour à tous, je lance cette discussion car j'ai un très gros problème avec une boucle for que je n'arrive pas à créer et j'aurais besoin de l'aide des experts en excel.
J'aimerai créer une macro avec une boucle qui vient :
1) Récupérer la référence en A2 (liste capa_opé) et la copier
2) Se rendre sur Capacités opérationnelles, filtrer sur la référence copiée, filtrer sur opérationnelle
3) Copier les noms des opérateurs
4) Les coller sous la référence en C2 (liste capa_opé)
5) Faire pareil avec la cellule A3, jusqu'à arriver à la fin de la lsite de référence en colonne A
--> Une fois que toutes les références sont renseignées, on supprime de la cellule C2 à NG2 pour ne plus avoir "Prénom"
Je pense à une boucle for next mais je n'arrive pas à la programmer
J'ai commencé un code mais je n'arrive pas à créer la boucle
Je vous remercie pour votre aide !
 

Pièces jointes

  • FICHIER PB CAPA.xlsm
    62.5 KB · Affichages: 2
Solution
Re,

Oui, oui, c'est clair.

Alors la première partie : Grâce à ce bouton, la macro vient récupérer les données d'un fichier externe
power query peut très facilement le faire, mais pour ça il faudrait que nous ayons un exemple du fichier externe et des précisions sur ce qu'il faut ou non importer / transformer.
rajouter des colonnes et adapter le premier tableau selon mes besoins
rajouter des colonnes et adapter, ça, power query sait également le faire.
mais il faudrait savoir quelles colonnes pour quel tableau. Quel est le 'premier tableau' ????

dans la version ci-jointe vous trouverez une version macro de ce que vous demandiez en post initial.
Au fait, dans la version Power Query pour les références...

Hasco

XLDnaute Barbatruc
Bonjour,

Voici une proposition par Power Query (inclus dans votre version excel).

Au fait ! votre exemple semble ne pas correspondre avec ce que vous dites :
pour la référence GG436-1002-3 on trouve :
Daniel
Dimitri
Kevin
Philippe

Les deux derniers sont en compétence Gelé (3) ce qui semble contredire : filtrer sur opérationnelle
 

Pièces jointes

  • FICHIER PB CAPA.xlsm
    120.9 KB · Affichages: 5
Dernière édition:

Hasco

XLDnaute Barbatruc
Re

Et Oui. A partir du moment où Power Query vous fait un tableau structuré vous pouvez en faire ce que vous voulez.

Au fait vous ne dites pas si les résultat sont justes car il ne correspondent pas à votre exemples. Doute sur ce que veut dire 'filtrer sur opérationnelle'.

Pour la référence GG436-1002-3 vous avez 4 noms :
Daniel
Dimitri
Kevin
Philippe
Les deux premiers sont en 'Compétence' Opérationnel (2)
les deux derniers sont en 'Compétence' Gelé (3)

Me serai-je trompé sur le filtrage à appliqué ?

Cordialement
 

Cotriana

XLDnaute Nouveau
Re

Et Oui. A partir du moment où Power Query vous fait un tableau structuré vous pouvez en faire ce que vous voulez.

Au fait vous ne dites pas si les résultat sont justes car il ne correspondent pas à votre exemples. Doute sur ce que veut dire 'filtrer sur opérationnelle'.

Pour la référence GG436-1002-3 vous avez 4 noms :
Daniel
Dimitri
Kevin
Philippe
Les deux premiers sont en 'Compétence' Opérationnel (2)
les deux derniers sont en 'Compétence' Gelé (3)

Me serai-je trompé sur le filtrage à appliqué ?

Cordialement
Au niveau des filtres c'est très bien, je me suis trompé dans l'exemple c'est vrai ! Et pensez-vous qu'il est possible d'automatiser le passage en mode query où cela doit être fait manuellement ?

Actuellement, je suis entrain de faire la macro venant mettre à jour la base de données
 

Hasco

XLDnaute Barbatruc
Re,

Actuellement, je suis entrain de faire la macro venant mettre à jour la base de données
Quelle mise à jour de quelle base de données ?

Power query est là pour ça et peut le faire pour vous. Mais nous n'en savons pas suffisament sur votre projet pour être plus précis.
le passage en mode query
Que voulez-vous dire par là ?

On peut faire une macro qui demande la mise à jour de la requête.

cordialement
 

Cotriana

XLDnaute Nouveau
Re,


Quelle mise à jour de quelle base de données ?

Power query est là pour ça et peut le faire pour vous. Mais nous n'en savons pas suffisament sur votre projet pour être plus précis.

Que voulez-vous dire par là ?

On peut faire une macro qui demande la mise à jour de la requête.

cordialement

Alors, je vais essayer d'être un peu plus clair, l'idée et que le gestionnaire clique sur un bouton.

Grâce à ce bouton, la macro vient récupérer les données d'un fichier externe et les colle en cellule A1 de la feuille "Capacités opérationnelles", ensuite cette macro vient rajouter des colonnes et adapter le premier tableau selon mes besoins (sur le fichier envoyé j'ai mis seulement les données essentielles pour la résolution).

Ensuite, j'aimerai que dans la même macro, une boucle (que je ne sais pas programmée), vienne :
1) Récupérer la référence en A2 (liste capa_opé) et la copier
2) Se rendre sur la feuille "Capacités opérationnelles", filtrer sur la référence copiée, filtrer sur opérationnelle
3) Copier les noms des opérateurs
4) Les coller sous la référence en C2 (liste capa_opé)
5) Faire pareil avec la cellule A3, jusqu'à arriver à la fin de la lsite de référence en colonne A
--> Une fois que toutes les références sont renseignées, on supprime de la cellule C2 à NG2 pour ne plus avoir "Prénom"

L'idée est qu'à partir de la feuille "liste capa_opé" je crée mes listes déroulantes dépendantes pour que les gestionnaires sachent quel opérateur sait faire quelle référence durant la planification sans avoir à retourner dans les tableaux.

L'idée est de tout automatisée pour faire gagner un max de temps.

Suis-je assez clair sur mon besoin ? J'essaye depuis ce matin et je n'avance pas
 

Hasco

XLDnaute Barbatruc
Re,

Oui, oui, c'est clair.

Alors la première partie : Grâce à ce bouton, la macro vient récupérer les données d'un fichier externe
power query peut très facilement le faire, mais pour ça il faudrait que nous ayons un exemple du fichier externe et des précisions sur ce qu'il faut ou non importer / transformer.
rajouter des colonnes et adapter le premier tableau selon mes besoins
rajouter des colonnes et adapter, ça, power query sait également le faire.
mais il faudrait savoir quelles colonnes pour quel tableau. Quel est le 'premier tableau' ????

dans la version ci-jointe vous trouverez une version macro de ce que vous demandiez en post initial.
Au fait, dans la version Power Query pour les références OBSOLETE IND Cellule Banc Caisson Limitateurs, vous verrez des "doublons" je ne savais pas s'il fallait les éliminer ou pas (maintenant je pense que oui)

La macro s'appelle 'Boucler' et fait appel de manière récursive à une fonction nommée 'OpérationnelsParRéférence' ( on trouve les noms qu'on peut :) )

cordialement
 

Pièces jointes

  • FICHIER PB CAPA V2.xlsm
    136.9 KB · Affichages: 1

Cotriana

XLDnaute Nouveau
Bonjour, merci beaucoup pour ce code, il marche comme il faut ! Cependant, je ne sais pas trop comment l'adapter à mon vrai tableau qui comporte 17 colonnes,

If valeurs(i, 2) = Ref And Left(valeurs(i, 3), 6) = "Opérat" Then dico(valeurs(i, 4)) = ""

Il s'agit de ce 6 je n'arrive pas à comprendre à quelle colonne il fait référence ?
 

Cotriana

XLDnaute Nouveau
Bonjour, merci beaucoup pour ce code, il marche comme il faut ! Cependant, je ne sais pas trop comment l'adapter à mon vrai tableau qui comporte 17 colonnes,

If valeurs(i, 2) = Ref And Left(valeurs(i, 3), 6) = "Opérat" Then dico(valeurs(i, 4)) = ""

Il s'agit de ce 6 je n'arrive pas à comprendre à quelle colonne il fait référence ?
ça me parle d'incompatibilité de type quand j'adapte juste le numéro des colonnes,
c'est bon pour le 6 j'ai compris l'intérêt
 

Hasco

XLDnaute Barbatruc
Bonjour,
je ne sais pas trop comment l'adapter à mon vrai tableau qui comporte 17 colonnes,

D'où l'intérêt de donner des fichiers exemples REPRESENTATIFS :)
Mais ne je pense pas que vous ayez besoin de retourner les 17 colonnes.
Dans votre tableau de Valeurs il vous faut au minimum la colonne qui contient la ref, celle qui contient la compétence et celle qui contient le nom du personnel, le reste, on s'en fiche.
Votre code pour les récupérer peut être écrit comme ceci :

VB:
Valeurs = ThisWorkbook.Sheets("Capacités opérationnelles").Range("T_CAPAOPE[[Capacité opérationnelle]:[Prénom]]").Value

Cordialement
 

Cotriana

XLDnaute Nouveau
Bonjour,


D'où l'intérêt de donner des fichiers exemples REPRESENTATIFS :)
Mais ne je pense pas que vous ayez besoin de retourner les 17 colonnes.
Dans votre tableau de Valeurs il vous faut au minimum la colonne qui contient la ref, celle qui contient la compétence et celle qui contient le nom du personnel, le reste, on s'en fiche.
Votre code pour les récupérer peut être écrit comme ceci :

VB:
Valeurs = ThisWorkbook.Sheets("Capacités opérationnelles").Range("T_CAPAOPE[[Capacité opérationnelle]:[Prénom]]").Value

Cordialement
Je ne comprends pas, même en rajoutant le code ça vient me mettre une nouvelle erreur...
 

Hasco

XLDnaute Barbatruc
Re,

Ne vous contentez pas de copier/coller ce qu'on vous donne, tentez de comprendre comment ça fonctionne.
Moi je n'ai aucun moyen de vous aider sans un classeur représentatif.
Votre erreur du post 10 peut venir de chaque membre de la ligne de code.
Les valeurs comparées doivent être du texte, si le code tombe sur un nombre ou une valeur vide ça peut planter.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
299 703
Messages
1 978 596
Membres
206 300
dernier inscrit
gauthier75011