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: 3
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...

Cotriana

XLDnaute Nouveau
Un fichier représentatif, n'est pas forcément TOUT le fichier, mais un exemple avec juste assez de données anonymisées pour comprendre le problème. On a sans doute pas besoin de toutes les feuilles.
Même en supprimant toutes les données non-essentielles, il est encore trop lourd, je ne comprend pas, je vais essayer de trouver d'où vient l'erreur par moi-même. Merci quand même !
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici une version qui crée les listes de validation au moment de la sélection des cellules de la colonne 'Personnel' du tableau 'T_Réferences'. Plus besoin d'avoir un tableau de listes.

Sélectionnez une cellule vide de cette colonne puis choisissez dans la liste de validation.
Si la liste ne se crée pas c'est qu'il n'y a pas de personnels dispo pour cette référence.


En ce qui concerne l'erreur, lorsque vbe vous demande si vous voulez déboguez ou arrêter, choisissez déboguer.

Lorsqu'il s'ouvre (l'éditeur vbe) positionné sur la ligne problématique, celle-ci est surlignée en jaune.
Maintenez quelques secondes votre curseur sur les différentes variables et vous verrez apparaître leur contenu dans une info bulle (voir image ci-dessous où le curseur était sur le mot 'valeurs'). Vous pouvez pour plus de précision, ouvrir la fenêtres des variables locales que vous pourrez explorer. En autre vous verrez celles qui ne sont pas du bon type

Quelque chose comme ceci :

1652266166928.png

Cordialement
 

Pièces jointes

  • FICHIER PB CAPA V3.xlsm
    96.4 KB · Affichages: 1
Dernière édition:

Cotriana

XLDnaute Nouveau
Re,

Voici une version qui crée les listes de validation au moment de la sélection des cellules de la colonne 'Personnel' du tableau 'T_Réferences'. Plus besoin d'avoir un tableau de listes.

Sélectionnez une cellule vide de cette colonne puis choisissez dans la liste de validation.
Si la liste ne se crée pas c'est qu'il n'y a pas de personnels dispo pour cette référence.


En ce qui concerne l'erreur, lorsque vbe vous demande si vous voulez déboguez ou arrêter, choisissez déboguer.

Lorsqu'il s'ouvre (l'éditeur vbe) positionné sur la ligne problématique, celle-ci est surlignée en jaune.
Maintenez quelques secondes votre curseur sur les différentes variables et vous verrez apparaître leur contenu dans une info bulle (voir image ci-dessous où le curseur était sur le mot 'valeurs'). Vous pouvez pour plus de précision, ouvrir la fenêtres des variables locales que vous pourrez explorer. En autre vous verrez celles qui ne sont pas du bon type

Quelque chose comme ceci :
Regarde la pièce jointe 1139267

Cordialement
Milles merci à vous ! je pense que ça devrait le faire!
 

Cotriana

XLDnaute Nouveau
Re,

Voici une version qui crée les listes de validation au moment de la sélection des cellules de la colonne 'Personnel' du tableau 'T_Réferences'. Plus besoin d'avoir un tableau de listes.

Sélectionnez une cellule vide de cette colonne puis choisissez dans la liste de validation.
Si la liste ne se crée pas c'est qu'il n'y a pas de personnels dispo pour cette référence.


En ce qui concerne l'erreur, lorsque vbe vous demande si vous voulez déboguez ou arrêter, choisissez déboguer.

Lorsqu'il s'ouvre (l'éditeur vbe) positionné sur la ligne problématique, celle-ci est surlignée en jaune.
Maintenez quelques secondes votre curseur sur les différentes variables et vous verrez apparaître leur contenu dans une info bulle (voir image ci-dessous où le curseur était sur le mot 'valeurs'). Vous pouvez pour plus de précision, ouvrir la fenêtres des variables locales que vous pourrez explorer. En autre vous verrez celles qui ne sont pas du bon type

Quelque chose comme ceci :

Regarde la pièce jointe 1139270
Cordialement
Re, juste savez-vous comment il est possible de récupérer les opérateurs en "Opérationnels" et "En apprentissage" au niveau de cette ligne du code ?
If valeurs(i, 3) = Ref And Left(valeurs(i, 4), 6) = "Opérat" Then dico(valeurs(i, 5)) = ""
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

En lieu et place de
en "Opérationnels" et "En apprentissage"
ne serait-ce pas :
en "Opérationnels" Ou "En apprentissage" ????
Vous avez déjà les Opérationnels par Left(valeurs(i,4),6) qui récupère les 6 premiers caractères de la chaîne contenue dans valeur(i,3).

On va faire un Ou en supposant que les données à tester sont dans la même colonne :

VB:
If valeurs(i, 3) = Ref And ( Left(valeurs(i, 4), 6) = "Opérat" Or Valeurs(i,4) = "En apprentissage" ) Then dico(valeurs(i, 5)) = ""

Utilisez la balise de code (</>) sur la barre de bouton de l'éditeur de post pour publier vos codes. Cela les rend plus lisible

cordialement
 

Cotriana

XLDnaute Nouveau
Re,

En lieu et place de

ne serait-ce pas :

Vous avez déjà les Opérationnels par Left(valeurs(i,4),6) qui récupère les 6 premiers caractères de la chaîne contenue dans valeur(i,3).

On va faire un Ou en supposant que les données à tester sont dans la même colonne :

VB:
If valeurs(i, 3) = Ref And ( Left(valeurs(i, 4), 6) = "Opérat" Or Valeurs(i,4) = "En apprentissage" ) Then dico(valeurs(i, 5)) = ""

Utilisez la balise de code (</>) sur la barre de bouton de l'éditeur de post pour publier vos codes. Cela les rend plus lisible

cordialement
Merci Barbatruc pour votre aide, j'en ai terminé avec ce fichier grâce à votre macro hascooooooo! Bonne continuation à vous, je clôture cette discussion.:cool:
 

Discussions similaires

Réponses
56
Affichages
2 K
Réponses
4
Affichages
297

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki