Extraire des données Bon de commande via base de données

Bonjour à tous,

Je souhaite extraire des données d'un bon de commande pour alimenter automatiquement une base de données.

Pour cela j'ai voulu créer une macro en me servant de l'enregistreur.

Malheureusement cela ne marche pas car le bon de commande a des cellules fusionnées.

Une bonne âme pourrait elle m'aider.

Je joins un exemple de bon de commande ou j'ai surligné en jaune les cellules que je veux recopier dans ma base (en valeur uniquement)

Vous remerciant par avance

Richard

Désolé, je joins un nouveau fichier dans lequel j'ai ajouté un onglet ou les données doivent être recopiées; ce sera plus clair.

155bdc-vierge.xlsm (66.38 Ko)

Bonjour,

La valeur de la plage fusionnée se trouve dans la cellule supérieure gauche de cette plage.

Exemple avec le numéro de bon de commande :

la plage fusionnée correspond à G11:I11; la valeur se trouve donc en G11.

Pour affecter cette valeur à la cellule D2 de la feuille "BASE", il suffit d’écrire

Worksheets("BASE").Range("D2") = Worksheets("Master").Range("G11")

A+

Bonjour,

Je te remercie pour ta réponse; cependant comment faire pour qu'à chaque saisie de bon de commande cela n'écrase pas les lignes déjà inscrites.

Si je suis ton conseil la valeur G11 ira s'inscrire en D2 mais il faut que ma macro intègre le fait qu'a la prochaine saisie il l'inscrive en D3 et la ca devient trop compliqué pour mes maigres connaissances...

Je t'aurais bien donné un code mais je ne parviens pas à faire la correspondance entre les 2 feuilles.

Exemple :

sur la feuille "Master", l'enseigne est censée être reportée dans quelle cellule de la feuille BASE ?

Idem pour les autres infos à reporter.

A+

Pour l'enseigne cela reporte à la colonne F "Annonceurs"; pour support la colonne I;Edition en colonne B; date de parution en colonne C "Mois"; Commercial en colonne E; le 1 de la cellule H13 du master en colonne G "NC"; le format en Colonne J et enfin je n'ai besoin que du CA net (master Y28 par exemple) en colonne H.

Dis moi si cela suffit

Merci

Ton fichier en retour

206bdc-vierge-1.xlsm (71.23 Ko)

A+

Un grand merci à toi c'est génial.

Ça fonctionne pile poil

Frangy,

Comment puis-je déplacer le bouton macro créé sur une autre page?

ou quel ligne de code faut-il que je modifie pour que ce bouton fonctionne sur la feuille "Base" par exemple.

En te remerciant par avance pour ta réponse

Richard

J'ai placé la macro "Copier" dans un module standard.

J'ai remplacé le bouton de contrôle ActiveX par un bouton contrôle de formulaire que j'ai placé dans la feuille "BASE" et je lui ai affecté la macro "Copier"

202bdc-vierge-1.xlsm (68.45 Ko)

A+

Je te remercie beaucoup

Bonne journée

Bonjour Frangy,

Je suis désolé de t'importuner mais j'aime bien comprendre pour pouvoir progresser.

Or dans les modifications que tu as apporté; c'est le même code ? c'est de la magie

Ce que je ne t'ai pas précisé, c'est que la page "Master" est appelé à changer : je m'explique j'insère un nouveau bon de commande d'un commercial x dans mon dossier (le bon est identique dans sa conception) je renomme la page insérée "Master" et l'ancien "master" "master2" par exemple .

Quand je clique sur mon bouton "Copier" cela ne marche pas et je n'arrive pas à comprendre pourquoi? :

Help me please

(Après je ne t’embête plus promis!

Bonjour,

Désolé mais pas de magie la dedans !

Le programme prend en compte 2 feuilles nommées "Master" et "BASE".

D'après tes explications, ton opération revient à changer le contenu de la feuille "Master", ce qui n'a aucune influence sur le fonctionnement du programme, celui-ci étant placé dans un module standard et appelé par un bouton dans la feuille "BASE".

Il faudrait que je vois ton classeur pour en dire d'avantage.

A+

Merci de m'accorder encore un peu de ton temps;

Je joins le fichier

dans mon essai, j'ai modifié le nom de la feuille ajoutée "master2" en "master"

mais la macro bloque à l'instruction "DerLigS = .Range("Fond").End(xlUp).Row"

Le bouton "copier" est déplacé en feuille 1

Dis moi si je ne suis pas assez clair

35bdc-vierge-1.xlsm (106.05 Ko)

Ah oui ! J'avais omis de te préciser un petit détail

Pour déterminer le numéro de la dernière ligne des articles commandés (plage A28:A35), j'ai utilisé une cellule nommée "Fond" qui se situe en A36. A partir de cette cellule, je remonte la colonne A pour trouver la dernière ligne renseignée avec la ligne de code

DerLigS = .Range("Fond").End(xlUp).Row

Grace au nommage de la cellule de fond de liste, sa référence est mise à jour automatiquement si tu insères des lignes.

J'ai utilisé cet artifice car je ne savais pas si le nombre de lignes pour les articles était figé ou non (8 lignes actuellement).

Quand tu ajoutes une nouvelle feuille, cette cellule nommée n'existant pas dans la nouvelle feuille, le programme plante.

Dans ton cas, il est préférable de trouver un autre moyen pour déterminer l'étendue de la liste d'articles.

Donc première question : le nombre de lignes pour les articles est-il figé ?

A+

Ahhhh, je me sens mieux, je n'arrivais pas à comprendre pourquoi ça plantait

Oui la liste des articles est figé à 8 donc pas de problème.

je suis complètement néophyte mais j'apprends et ca c'est génial

J'ai remplacé .Range("Fond") par .Range("A36").

68bdc-vierge-1-1.xlsm (101.51 Ko)

A+

Super top méga génial,

Je te suis infiniment reconnaissant et je vais pouvoir finaliser mon truc

Bonne journée

Rechercher des sujets similaires à "extraire donnees bon commande via base"