Après de plusieurs tests à partir de ce sujet d’il y a quelques mois j’ai décidé de simplifier, donc de reformuler ma question dans le fichier EXCEL joint.
Cela fonctionne comme j’en ai rêvé depuis un moment en essyant sans succès avec des formules !
J’ai testé ta macro et tu trouveras le tableau Excel joint avec le résultat de mes tests.
Cela m’ouvre des persectives de traitements EXCEL que je souhaite poursuivre et partager avec vous sur ce forum …/…
Re,
Voilà pour les corrections,
Ensuite pour :
*Ce qui pourrait être améliorer *
.Permettre le glisser-déplacer sur la feuille de l’un ou l’autre de ces 2 tableaux et du bouton TRANSFERT sans dysfonctionnements.*
il faut me développer un peu plus ce que tu attends. Formule de fonctions imbriquées complexes-V021.xlsm (28,1 Ko)
Merci pour ton retour,
A ta demande de précision suivante :
Ce qui pourrait être améliorer *
.Permettre le glisser-déplacer sur la feuille de l’un ou l’autre de ces 2 tableaux et du bouton TRANSFERT sans dysfonctionnements.
il faut me développer un peu plus ce que tu attends.
Il s’agit de permettre lors d’un réaménagement d’une feuille excel de permettre ce qui suit :
Sélectionner l’un ou l’autre des 2 tableaus (idem pour n.ligne(s) à suivre ou colonne((s) à suivre).
Amener le pointeur de la souris sur le bord gauche ou droit de la zone sélectionnée. Le pointeur se transforme en une croix à quatre flèches (dans les quatre directions)
Cliquez (bouton gauche de la souris) - Glissez - Relachez à l’endroit désiré. Les cellules / lignes / colonnes du tableau sélectionné sont déplacées à l’endroit désiré . La zone d’origine est vidée.
Avec mes relents de « basic sommaire » je viens de faire une plongé dans VBA en commentant la macro initiale TRANSFERT que je n’ai pas encore modifiée.
Pour des raisons d’ergonomie comment faire pour :
Mettre Tableau1 et Tableau2 l’un en dessous de l’autre sur la même feuille.
Afficher sur le Tableau2 ligne Rx à partir de la colonne C1 les N cellules Ox provenant du Tableau1 Colonne Cx(remplace les Tx programmés dans la macro TRANSFERT initiale)
Mettre en couleur sur le Tableau2 les N cellules Ox provenant du Tableau1 Colonne V=V=> vert ou V=R =>rouge voir exemple
Merci d’avance pour vos conseils de modifications de cette macro initiale TRANSFERT.
Grand Merci à Mimimathy pour m’avoir sorti des formules EXCEL en me permettant de
découvrir pleins d’évolutions possibles avec cette macro de TRANSFERT de Tableau1 vers Tableau2 !!!
C’est OK et je poursuis les tests de cette feuille Excel avec ces 2 tableaux et cette macro TRANSFERT
Je me pose les questions suivantes concernant la logique de fonctionnement de 2 tableaux l’un en dessous de l’autre sur une même feuille EXCEL alors que j’ai lu çà et là comme n’étant pas optimum :
Est-ce le nom Dl est l’équivalent de Tableau1 ou plage de valeur1 ?
Est-ce que le nom lig est l’équivalent de Tableau2 ou plage de valeur2 ?
Si oui est ce que sans dénaturer la logique VBA nous aurions le droit de :
remplacer Dl par Tableau1 = Ws.Range(« A12 »).End(xlUp).Row et de
remplacer lig par Tableau2 = Ws.Range(« A » & Rows.Count).End(xlUp).Row
avec bien entendu les modifications en cascades dans le code.
L’aventure se poursuit …
Merci d’avance pour vos conseils de modifications de la macro TRANSFERT pour ces 2 points :
J’ai modifié cette ligne de code pour tenir compte des 3 lignes de tête du Tableau2 au-dessus de R1. Est-ce correct ?
Dl = Ws.Range(« A12 »).End(xlUp).Row
Par :
Dl = Ws.Range(« A » & lig_R1 - 3).End(xlUp).Row
Je n’arrive pas à vérifier la valeur intermédiaire (« A » & lig_R1 - 3)
2)|Je n’arrive pas à modifier cette ligne de code pour récupérer automatiquement dans la macro TRANSFERT le nom d’onglet de cette feuille.
Set Ws = Sheets(« graphique »)
Par :
???
Par exemple comment récupérer automatiquement en remplacement de Feuil1 la valeur « graphique » en ligne E13 avec le nom FeuilleActive. J’ai testé sans succès plusieurs instructions mises en commentaires dans la macro TRANSFERT. Il y a surement un truc !!!
Pour info: J’ai réussi à fiabiliser le déplacement des 2 tableaux dans la feuille (du moins je le crois !!) avec les variables d’indices de lignes (Lig_O1 et Lig_R1) pour chacun des Tableau1 et Tableau2 de la plage A de la feuille EXCEL.
Par contre je bute actuellement sur ces 2 points issus de mon analyse des actions redoutées mises dans un onglet du classeur joint. Ce classeur est destiné à des utilisateurs ayant des connaissances de tout premier niveau d’EXCEL, C’est pourquoi je cherche:
à simplifier ce problème complexe de graphique qui m’intéresse depuis longtemps,
et à le fiabiliser au maximum en m’appuyant sur quelques principes ergonomiques.
Après avoir ajouté cette ligne de code j’ai ce message Erreur d’excutuion 91 => Objet ou variable de bloc with non définie.
Alors que j’ai en début de macro ;
Dim Ws As Worksheet
Merci de votre aide …
C’est elle qui définit la feuille, alors après avoir ôter le commentaire de la ligne du dessus tout mettant le nom original de l’onglet de la feuille.
Je te joins une copie du message Pourquoi ? Parce qu’il faut que je permette à l’utilisateur de modifier le nom de l’onglet sans entrer dans la macro TRANSFERT.
Je ne vois pas comment résoudre ce problème ???
Merci d’avance
Je ne peux utiliser la macro TRANSFERT dans un même classeur que sur une seule feuille ayant comme nom d’onglet « graphique » ?
Cela me pose un gros problème !!!
Comment vais-je faire pour récupérer le nom de l’onglet de la feuille dans une variable de la marcro TRANSFERT pour qu’elle soit activée automatiquement ensuite ?
Peut-etre faut-il une sous macro dans la macro TRANSFERT ?
ou …/…
MERCI !!!
IDEE DE SOLUTION :
Je conserve les lignes de code suivantes (en gras) : Set Ws = ActiveSheet ': Attribution d’une valeur à la variable objet Ws : Sheets (Feuil1)
’ ActiveSheet.Name = « Graphique » ActiveSheet.Name = ActiveSheet.Range(« E13 »).Value
'Ws.Range(« E13 ») = ActiveSheet.Name
Et je remet la formule suivante pour trouver le nom de l’onglet de la feuille dans la cellule « E13 » de chacune des feuilles :
=DROITE(CELLULE(« nomfichier »;A1);NBCAR(CELLULE(« nomfichier »;A1))-TROUVE("]";CELLULE(« nomfichier »;A1)))
De plus pour permettre de déplacer cette formule dans une autre cellule de la feuille je remplace « E13 » par le nom que je lui ai attribué « FeuilleActive » donc la ligne de code TRANSFERT devient : ActiveSheet.Name = ActiveSheet.Range(« FeuilleActive »).Value
Et ça marche !!!
Voir classeur joint avec plusieurs feuilles « Grahique (x) » récupérés dans différente cellules : Formule de fonctions imbriquées complexes-V025-5.xlsm (51,3 Ko)
Super fonctionnement !!! Alors je publie cette version de la macro TRANSFERT avec les commentaires et les messagesbox pour mieux la partager sur ce super forum. De fonctions imbriquées complexes à cette macro TRANSFERT-V025-7.xlsm (46,5 Ko)
Cette macro proposée par Mimimathy m’a ouvert de nouvelles perspectives pour ce projet que j’ai à coeur depuis des mois voire années et réactiver mes relents de basic…/…
Meilleur Noel possible en cette année si particulière !!!