Remplissage automatique

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 09:36

Bonjour tout le monde.

Je vous expose un probleme vba que je n'arrive pas à regler, merci pour votre aide d'expert.

J'ai d'un côté une tableau répertoriant dans une première colonne un numéro de commande, dans une deuxième colonne le nom du transporteur associé et dans une troisième la date de ramasse.

Par un premier export, j'envoie au transporteur x la liste des commandes qu'il doit ramasser, ce dernier me renvoie ensuite la matrice avec la liste des commandes et la date de ramasse effective.

A partir de son retour, je cherche le moyen de coller les dates de ramasses automatiquement en vba sur ma matrice initiale, et ce sans utiliser de recherchev sur ma matrice initiale.

En gros je souhaiterai avoir ma matrice de base sur l'onglet 1, le retour transporteur sur l'onglet 2, et faire en vba :
- Sur longlet du retour transporteur (onglet 2) : La copie de la date de ramasse (ligne 1, colonne C)
- la recherche du numéro de commande correspondant (ligne 1 colonne A sur le retour transporteur) sur ma matrice initiale (je trouve donc le même numéro de commande sur la colonne A de ma matrice initiale, sur une ligne xxx)



- en déduire la cible de copie (ici la 3ème colonne) de la même ligne
- coller la date
- recommencer avec la ligne de commande suivante sur le retour transporteur.

Je souhaite éviter de mettre une recherchev simple en dur sur la colonne 3 de ma matrice initiale, ce qui serait le plus simple j'en suis sur, pour 2 raisons :
- la colonne 3 de ma matrice initiale peut faire l'objet de saisies manuelle
- la marice de retour transporteur changera tous les jours et ne restera pas fixe, la colonne 3 de ma matrice initiale devra donc contenir de vraies données, pas des formules en liaison avec d'autres tableaux.

Merci beaucoup pour votre aide qui sera précieuse je ne doute pas, de mon côté je nage un peu sur ce point.

Nicolas
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'558
Appréciations reçues : 88
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 15 janvier 2017, 11:27

Bonjour Pastisomaitre, bienvenue à toi,
Pastisomaitre a écrit :de mon côté je nage un peu sur ce point
Si tu ne veux pas qu'on se retrouve tous à nager au même endroit, mais dans des sens différents :roll: le mieux serait de déposer une version allégée et sans données confidentielles de ton fichier, avec ses deux onglets.
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 11:44

On va éviter la natation commune.
Je fais ça!
Merci
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 15:09

Exemple simplifié ci-joint.

Merci par avance pour votre expertise.
exemple.xlsx
(12.05 Kio) Téléchargé 12 fois
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'558
Appréciations reçues : 88
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 15 janvier 2017, 15:26

Re-bonjour,

Pour l'expertise, il faudra attendre le passage de quelqu'un d'autre :roll: Voici une proposition avec juste le bon sens du terroir :D ... enfin ... je crois!?

Coller les lignes suivantes dans un module standard ... et tester
Sub ramassage()
For Each c In Feuil2.[A2].Resize(Application.CountA(Feuil2.[A:A]) - 1, 1)
    On Error Resume Next
    lig = Application.Match(c, Feuil1.[A:A], 0)
    If Not IsError(lig) Then Feuil1.Cells(lig, 3) = c.Offset(0, 2)
Next c
End Sub
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 15:38

Si je pouvais, je te ferai un bisous.

Merci 1000 fois!!!!!!

Cela fonctionne!!!
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'558
Appréciations reçues : 88
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 15 janvier 2017, 15:41

Pastisomaitre a écrit :Si je pouvais, je te ferai un bisous
Après le coup de la pataugeoire ... Je crois que je vais passer mon tour :lol:

Tu verras, à l'usage s'il y a des situations qui se présentent et que tu n'avais pas prévues.

Bon travail
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 16:04

J'ai juste une question en complément de la grande aide que tu m'a déjà apporté. Dans l'exemple, la colonne avec les numéros de commandes est la colonne A dans les 2 onglets, la colonne B contient les dates dans les 2 onglets.
En réalité, les numéros de commandes sont sur la colonne A dans le retour transporteurs, mais sur la colonne D dans ma matrice.
De même, les dates sont sur la colonne B dans le retour transporteur, mais sur la colonne S sur ma matrice.

Comment adapter ton code?
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'558
Appréciations reçues : 88
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 15 janvier 2017, 16:41

Pastisomaitre a écrit :Comment adapter ton code?
Si j'ai bien compris, essaie ce qui suit (j'ai ajouté l'un ou l'autre commentaire ... Dis-nous s'il te faut plus d'explications)
Sub ramassage()
For Each c In Feuil2.[A2].Resize(Application.CountA(Feuil2.[A:A]) - 1, 1) 'pour chaque n° de commande en colonne A de "retour transporteur"
    On Error Resume Next
    lig = Application.Match(c, Feuil1.[D:D], 0) 'on cherche la ligne où figure, en colonne D de "matrice initiale", le n° de commande en question
    If Not IsError(lig) Then Feuil1.Cells(lig, 19) = c.Offset(0, 1) 'on inscrit en colonne 19 (S) de la "matrice initiale", la valeur figurant une colonne à droite du n° de commande (si trouvé)
Next c
End Sub
P
Pastisomaitre
Jeune membre
Jeune membre
Messages : 29
Inscrit le : 15 janvier 2017
Version d'Excel : 2010

Message par Pastisomaitre » 15 janvier 2017, 17:41

Merci encore et encore ça a l'air parfait!
Autre chose, sans vouloir abuser. Je cherche à écrire en vba dans une macro.
Je m'explique, j'ai une macro qui crée mon export à envoyer aux transporteurs,qui le remplissent et me le renvoient. Cet export comporte un recap épuré qui sert de base de données à copier coller sur ma matrice comme explicite dans mon premier post

Sur l'export dont je parle je voudrais intégrer en fin de macro un bouton sur lequel l'utilisateur cliquera ce qui sélectionnera la matrice épurée, pour eviter les manipulations manuelles.

En gros, créer une macro DANS une macro.

Est ce faisable?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Remplissage automatique
    par Anissei95 » 30 mai 2018, 19:11 » dans Excel - VBA
    4 Réponses
    200 Vues
    Dernier message par iliyes
    1 juin 2018, 14:55
  • Remplissage automatique
    par ygauvin2 » 19 mai 2019, 14:08 » dans Excel - VBA
    18 Réponses
    184 Vues
    Dernier message par Maryz
    20 mai 2019, 13:44
  • Remplissage automatique
    par jul997 » 20 novembre 2018, 13:10 » dans Excel - VBA
    2 Réponses
    82 Vues
    Dernier message par tulipe_4
    20 novembre 2018, 13:28
  • Remplissage automatique
    par dargoll » 1 mars 2016, 16:25 » dans Excel - VBA
    9 Réponses
    359 Vues
    Dernier message par dargoll
    2 mars 2016, 14:12
  • Remplissage automatique
    par jul997 » 22 novembre 2018, 08:37 » dans Excel - VBA
    10 Réponses
    255 Vues
    Dernier message par dhany
    23 novembre 2018, 08:27
  • Remplissage automatique
    par Wam21 » 19 mai 2017, 15:00 » dans Excel - VBA
    2 Réponses
    135 Vues
    Dernier message par Wam21
    19 mai 2017, 15:25