Création macro pour pagination

Bonjour,

J'aimerai créer une espèce de moulinette qui permettrait d'établir un chemin de direction.

Pour un souci de confidentialité j'ai pris des noms basiques.

Vous trouverez l'exemple concret ci-joints.

Mais traduit en texte je dirais que si l'enseigne choisie est "voiture" et "maison" et page 2 du 4 pages et pages 6 du 8 pages et qu'il est présent dans le 4x3 et présent dans la newsletter alors je veux le chemin suivant :

list_operation_2019_201903_voiture_4p_2,list_operation_2019_201903_maison_4p_2,list_operation_2019_201903_voiture_8p_6,list_operation_2019_201903_maison_8p_6,list_operation_2019_201903_4x3_1,list_operation_2019_201903_newsletter_AP_1

Il y a deux autres exemples plus simples dans le document.

Ca pourrait être une formule si imbriquée avec une concaténation, mais ce n'est pas l'idéal à l'utilisation car ces colonnes sont extraits d'un document plus complexe et quand quelqu'un ajoute ou supprime une colonne, la formule ne fonctionne plus.

l'idéal serait, je pense, une macro.

Merci d'avance à tout ceux qui prendront le temps de lire et comprendre ma problématique.

Bien cordialement.

Bonjour Cindy,

tu a écrit :

J'aimerai créer une espèce de moulinette qui permettrait d'établir un chemin de direction.

eh bien voilà, c'est fait, ta moulinette est prête :

Ctrl e ➯ travail effectué !

bien sûr, tu peux ajouter plus de lignes si tu veux !

si tu modifies ton tableau, c'est inutile d'effacer les précédents résultats : c'est fait automatiquement par la macro ; voyons ci-dessous un exemple bien concret.


ah, mais là, vraiment désolé : j'suis bien obligé d'te dire que t'as fait une énorme erreur ! une maison, une voiture, c'est très bien ; mais quel ménage peut être heureux sans son menhir gaulois ? un produit dont tout l'monde sait bien qu'il ne sert strictement à rien, mais qui a l'avantage considérable d'être inusable et de défier le temps ! et acheté uniquement pour que les voisins soient jaloux ?

faut lire la BD "Obélix et Compagnie" pour comprendre ; c'est un chef d'œuvre de cours sur le marketing !

screen

alors si toi aussi tu veux repousser l'envahisseur romain, pour participer activement à la dévaluation de la sesterce de Jules César, modifie ainsi la cellule A3 : voiture,maison,menhir ; puis fais Ctrl e ; vu ? ainsi, t'es pas limitée à 2 éléments seulement : tu peux en mettre 3 ou même plus ! c'est génial, non ? tu vas pouvoir envoyer encore bien plus de newsletters et autres pourriels que tu l'espérais ! de quoi inonder à ras-bord nos boîtes mail et dévaster encore plus la forêt amazonienne au nom du consumérisme à tout va !

mais c'est pas ta faute, hein ? t'es bien obligée d'suivre les consignes de l'agence de pub où tu bosses ! qui elle-même se conforme à la mode contemporaine qui fait que plus rien ne compte à part transformer les gens en automates-consommateurs : le déclic de l'acte d'achat, obtenu grâce à un martelage publicitaire intensif ; si intensif même qu'il s'apparente carrément à du lavage de cerveau (sans toutefois oser se dénommer publiquement et ouvertement ainsi !).

comme les publicitaires doivent être malheureux de pas pouvoir passer de pubs avec des images subliminales !

mais au train où ça va, c'est peut-être pour bientôt ?


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour dhany,

Waoow, c'est absolument incroyable et c'est une merveilleuse moulinette (que j'ai pour l'instant du mal a adapter à mon vrai fichier... mais c'est un bon début) !

Tu as attisé ma curiosité avec cette BD, mais je ne connaissais pas et donc je ne peux pas rebondir la dessus.

Je te remercie cependant, d'avoir ajouter avec délicatesse que tous ça n'était pas de ma faute, car tu es tout à fait dans le vrai.

Nous suivons le move... Bien ou pas bien, je suis d'accord avec les deux points de vues.

Néanmoins c'est avec grand plaisir que je peux t'ajouter à notre liste de diffusion

Pour être honnête, je ne pensais pas que quelqu'un essaierait de réaliser une telle prouesse informatique, et si c'était le cas, j’espérais pouvoir adapter le bout de code à mon document...Or ça ne marche pas comme je l'aimerais alors si tu as encore un peu de temps à m'accorder voici mes quelques requêtes.

J'ai fais un doc excel que tu trouveras ci-joint. Il se rapproche du vrai.

J'ai fais une note sur chaque onglet.

Et l'onglet code, est la liste exhaustive de toutes les paginations possibles.

Je pense qu'une macro unique pour tous les onglets va être compliqué.

Néanmoins je pense que l'idéale serait que je puisse partir avec une macro personnalisable.

Je m'explique, tu verras sur le doc que parfois le résultat devrait s'afficher colonne BF ou BH, si on peut dire à la macro que le résultat s'affiche dans la colonne ayant le nom "categories" c'est génial.

Et pareil pour chaque info, étant donné que l'emplacement des colonnes peuvent varier serait-il possible d'aller les chercher par nom de colonne ?

Je pense que ça complexifie pas mal la macro de départ, je ne veux vraiment pas abuser de ton temps mais si toutefois le cœur t'en dit ou que le challenge te semble plutôt réalisable, je t'en serais très reconnaissant !

! de quoi inonder à ras-bord nos boîtes mail et dévaster encore plus la forêt amazonienne au nom du consumérisme à tout va !

bonjour à vous

dhany,

parce que tu penses qu'Excel et le forum ne polluent pas ?

le débat dérape, je ne sais pas si c'est le lieu.

bonjour à vous

dhany,

parce que tu penses qu'Excel et le forum ne polluent pas ?

le débat dérape, je ne sais pas si c'est le lieu.

Bonjour Jmd,

C'est vrai que le forum permet de recevoir des mails... mais dans mon cas se sont des mails très attendus !!

Le reste est discutable ^^ Mais avec la fameuse loi RGPD, les internautes ont du pouvoir faire le tri dans les mails indésirés.

Bonne journée.

Cindy06,

pense-tu que le RGPD change quoi que ce soit aux spams ?

Jmd,

Oui et non, dans le sens ou l'internaute doit pouvoir avoir accès constamment à ses données personnelles.

De plus, il est obligatoire de demander l'accord de l'internaute, s'il veut communiquer ses coordonnées à d'autres fins commerciales ou pas.

Si l'internaute refuse il est censé recevoir moins de spam. Enfin ce n'est que mon avis

s'ils font comme moi ; à chaque fenêtre qui s'ouvre, je clique "oui" sans vraiment lire !

faut pas perdre de temps avec ces c...ries

inventées par F...K et non contre F...K, comme on le pense à tort

Je comprends bien.

Bonjour Cindy,

voici la nouvelle version :

fais Ctrl e sur la feuille active ➯ travail effectué ; à toi de tout contrôler soigneusement.

bien sûr, ça fait rien sur les feuilles non concernées : ni sur "Code", ni sur les 2 autres !

ça marche même si la cellule active n'est pas en colonne "categories" avant de lancer la macro.


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour dhany,

Encore plus waaoooww ! Tu es un génie !

Juste une petite question, si je rajoute une ligne, ligne 1, les entêtes de colonnes passent en ligne 2.

Pour que la macro démarre en ligne 3 en se référent aux entêtes ligne 2, suffit-il de modifier dans ton code vba

Cells(1, col)

en

Cells(2, col)

?

Je ne suis pas convaincu car mes essaies n'ont pas été concluant.

Y a t-il d'autres parties du code à modifier ?

rebonjour à vous

pour le fun : quel est le BUT de ce fichier ?

Bonjour jmd,

La macro de ce fichier permet de créer un chemin dans une arborescence.

Quand quelqu'un ajoute qu'un produit se trouve page 2/8 alors la macro de dhany créé un chemin codé disons, qui m'est très très utile pour la suite du traitement du document.

Cindy

re

ce n'est pas ton BUT, c'est ton moyen d'atteindre ton but. Il y a sans doute 10 autres moyens d'atteindre ton but, avec ou sans Excel.

je reformule : à quoi sert ton fichier ?

salut jmd,

le BUT réel de Cindy, c'est d'utiliser Power BI Desktop (avec ou sans Excel) ; on en rêve tous (et moi aussi) !

dhany

Bonsoir Cindy,

tu a écrit :

si je rajoute une ligne, ligne 1, les entêtes de colonnes passent en ligne 2.

exact, mais dans ce cas, il y a de nombreuses modifications à faire dans le code VBA, beaucoup plus que la seule modif que tu as mentionnée ensuite ; aussi, j'ai fait une nouvelle version, où la ligne d'entêtes est paramétrée ➯ grande simplification :

dans cette version "... - 1", j'ai ajouté une ligne avant celle des entêtes ➯ début du code VBA :

Option Explicit

'ligne des entêtes : à adapter au besoin
Const lg0 As Byte = 2

note bien que lg0 = 2


dans cette version "... - 2", j'ai ajouté 5 lignes avant celle des entêtes ➯ début du code VBA :

Option Explicit

'ligne des entêtes : à adapter au besoin
Const lg0 As Byte = 6

ainsi, comme la ligne des entêtes est devenue la ligne 6, il a suffit de remplacer 2 par 6.


1) la sub GetPréfixe() est restée inchangée


2) début de la sub Détect4Cols() :

Private Sub Détect4Cols()
  Dim chn$, col%: col = 22
  nsd = 0: vbc = 0: p43 = 0: nws = 0
  Do
    chn = Cells(lg0, col)

a) j'ai corrigé un petit bug en ajoutant cette ligne : nsd = 0: vbc = 0: p43 = 0: nws = 0

* pour les 3 colonnes "Visuel BC" ; "Présence 4X3" ; "Newsletter" : en principe, elles y sont toujours, donc mon oubli n'avait aucune incidence là-dessus : c'est juste une sécurité que j'avais ajouté (au cas improbable où elles ne sont pas présentes)

* pour la colonne "Nord, Sud" : c'est une colonne facultative ; et là, le bug pouvait être plus gênant ; c'est maintenant réglé !

b) par rapport à la ligne d'entêtes, j'ai modifié une seule instruction VBA : celle qui est juste après le Do


3) pour la sub principale GetChemins() :

c'est là où les modifs du code VBA sont nombreuses ; pour les voir, regarde où j'ai utilisé lg0


infos supplémentaires :

* pour détecter si la feuille où on doit exécuter la macro est bien la bonne, ça vérifie si sur la ligne d'entêtes, colonne V, il y a :

"Présence enseigne" ; donc ça fait rien sur la feuille "Code", ni sur les 2 autres (si tu décides de les rendre visibles)

* la colonne "Présence enseigne" (position fixe V) est supposée toujours exister ; colonne "Visuel BC" (position variable) : idem

le code VBA regarde donc toutes les colonnes de V à celle (position variable) qui précède "Visuel BC"


si tu as besoin de plus d'infos, n'hésite pas à m'demander !

dhany h-animaux37

salut jmd,

le BUT réel de Cindy, c'est d'utiliser Power BI Desktop (avec ou sans Excel) ; on en rêve tous (et moi aussi) !

dhany

re à tous

dhany,

je posais une question capitale à Cindy

savoir quel est le BUT d'un fichier, c'est résoudre la moitié d'un problème. Et parfois, c'est le faire disparaître.

s'il faut changer d'outil, alors il le faut

9 fois sur 10, au départ on fait trop compliqué. Et ensuite on bidouille des solutions bancales.

Excel n'est pas toujours la solution à une question

PBI non plus

Cindy, à quoi servent tes fichiers ?

@jmd

tu a écrit :

on bidouille des solutions bancales

* à propos de ma solution VBA du 10 août, Cindy a écrit :

Waoow, c'est absolument incroyable et c'est une merveilleuse moulinette

* puis quand j'ai demandé si ma 2ème solution VBA lui convenait, Cindy a répondu :

Encore plus waaoooww ! Tu es un génie !

alors toute modestie mise à part, j'ai vraiment pas eu l'impression d'avoir bidouillé des solutions bancales !


rappel : VBA est le sigle de Visual Basic for Application ; il y a un VBA pour chaque application Office : une partie est commune à tous les VBA, et l'autre est spécifique à l'application elle-même ; par exemple : dans Excel : gestion des cellules, feuilles de calcul... ; dans Word : gestion des paragraphes, des styles... ; dans PowerPoint : gestion des diapositives ; dans Outlook : gestion des mails ; etc...

Microsoft n'a certainement pas créé ces différents langages VBA pour rien, juste pour s'amuser ! surtout quand on songe à quel point il est cupide et près de ses sous : il évite donc tout gaspillage inutile de temps et d'argent !


de nombreuses applications Excel sont faites grâce à VBA et n'auraient jamais pu voir le jour sans cela ! exemple : gestion de budget financier ; pour certains jeux comme "Microsoft Train Simulator" ou "Microsoft Flight Simulator", je serais pas étonné si toute la partie qui concerne les multiples données de configuration et de jeu sont stockées dans des tables gérées par VBA (soit façon Excel, soit façon Access, mais par VBA quand même ; à moins, bien sûr, que ce soit en langage C ou C++ ; tiens, encore un langage de programmation ? pourquoi ils ont pas utilisé Power BI ou PowerQuery ? ).

dhany

Bonjour à vous deux,

Encore merci Dhany car on frise la perfection sur ce document alors oui j'insiste sur les mots "Waoow" "merveilleuse moulinette" "absolument incroyable" "génial, génie..." etc etc.


Jmd, mon fichier à pour but de lister des articles par opération commerciale sur un fichier excel à destination d'un PIM.

Je ne sais pas si c'est clair mais l'idée est là.

Je ne suis absolument pas contre de travailler avec d'autres outils mais très honnêtement, je ne les connais pas du tout, alors n'hésite pas à m'en lister leurs bienfaits. Je pourrais éventuellement m'en inspirer pour la suite.

Aujourd'hui et comme le disait Dhany, on m'a fourni un matrice excel sur laquelle je dois travailler. Sur cette dernière, j'ai juste pris conscience que l'une des tâches était récurrente et fastidieuse et je savais qu'avec le langage VBA, il possible d'automatiser pas mal d'actions et avec l'impressions grâce au VBA, Excel repousse beaucoup de limites, c'est pourquoi j'ai tenté ma chance sur ce forum.

Bonne journée à vous.

Microsoft n'a certainement pas créé ces différents langages VBA pour rien, juste pour s'amuser ! surtout quand on songe à quel point il est cupide et près de ses sous : il évite donc tout gaspillage inutile de temps et d'argent !


de nombreuses applications Excel sont faites grâce à VBA et n'auraient jamais pu voir le jour sans cela ! exemple : gestion de budget financier ; pour certains jeux comme "Microsoft Train Simulator" ou "Microsoft Flight Simulator", je serais pas étonné si toute la partie qui concerne les multiples données de configuration et de jeu sont stockées dans des tables gérées par VBA (soit façon Excel, soit façon Access, mais par VBA quand même ; à moins, bien sûr, que ce soit en langage C ou C++ ; tiens, encore un langage de programmation ? pourquoi ils ont pas utilisé Power BI ou PowerQuery ? ).

dhany

re à toi

VBA est ancien, et maintenant remplacé par Power Query et ses acolytes pour la gestion/extraction de données

comme tu l'as compris : je ne parle de l’obsolescence de VBA que dans ce cas :

  • on est dans Excel
  • ET on gère des données
mais comme dans Excel on gère toujours des données (il y a des exceptions extrêmement rares), dès qu'on est dans Excel, on peut maintenant se passer de VBA

quant aux petits jeux pour le fun d'apprendre la programmation, je recommande d'apprendre sur d'autres langages que VBA qui est trop mal structuré et encourage à mal apprendre la programmation.

quant aux jeux commerciaux (Flight Simulator) ils ne sont évidemment pas en VBA, langage mal fichunpour des si gros développements

note que Power Query a son langage (M, que je recommande de ne pas apprendre ! on utilise le GUI très complet) et Power BI et Power Pivot ont DAX, que j'utilise en recopiant les formules recherchées sur le net (c'est plus des formules qu'un langage).

ces 2 langages ne sont pas faciles si on veut créer les formules, mais on les crée pas, c'est de la pure "recopie" de formules ou méthodes.

ce qui est certain, c'est qu'un excellent VBAistes saura apprendre ceci rapidement

Rechercher des sujets similaires à "creation macro pagination"