[VBA]copier le contenu d'un formulaire à un endroit précis en fonction d'un

Bonjour à tous,

je souhaiterais obtenir de l'aide pour réaliser ce que j'ai en-tête.

Explication :
je dispose d'un tableau excel qui comporte des centaines d'adresses de subnets répartis comme suis:
Colonne A : une description du subnet ou si le subnet est libre il est affiché "Disponible"
Colonne B: Le subnet proprement dit
Colonne C : le masque
et d'autres colonnes dont l'utilité n'est pas nécessaire ici.

j'ai donc créer un formulaire qui permet à une personne de créer un nouveau sous réseau, pour ce faire on rentre le masque et dans un combobox apparait la liste des réseaux disponibles avec le masque choisi (formule SI(ET()) si description est disponible et masque égal à alors j'affiche les subnets qui ont ces deux critères).
Le but est de pouvoir compléter la ligne (critères "disponible"/"masque") avec les informations de mon formulaire.
Dans mon idée en gros, c'est de comparer la valeur du subnet du formulaire avec celle de ma feuille excel, et de compléter les colonnes A, D, E etc... avec les éléments du formulaire.

J'apporte quelques précisions:
Je travaille sur une sheet qui se nomme "subnet prod"
la copie des différents éléments se fera lorsque je cliquerai sur un bouton de commande que j'ai appelé "createfwp"
la combobox où est stockée l'adresse Ip à chercher dans ma feuille se nomme "subfwp".
Je souhaite donc comparer subfwp.value à l'ensemble de ma colonne B.
Si la valeur est trouvée (elle le sera forcément puisque la combobox est remplie avec les valeurs se trouvant dans la colonne B), je copie les valeurs des autres combox dans les colonnes prévues à cet effet:

exemple:
si l'adresse IP "X" de ma combobox "subfwp" est trouvée ligne 212 de la feuille "subnet prod", je souhaite copier combobox1 en cellule A212, combobox2 en C212, combobox3 en D212 etc...

Si qqn a saisi ma demande je suis preneur.

Je précise je ne suis pas expert VBA, je suis ingénieur réseau. Et ce tableau est juste un confort de travail qui évitera des erreurs de saisis à termes.

Par avance merci

Bonjour,

Je pense que c'est réalisable, mais pour pouvoir t'aider au mieux, il nous faudrait ton fichier, avec des données anonymisées, et représentatif de ton fichier réel.

Ainsi que le début de ton travail (USF, codes...)

@ te relire

image

Merci de ton retour, je ne peux malheureusement partager le fichier car il comporte les données réseaux sensibles du groupe pour lequel je travaille, je te partage un extrait pour t'expliquer un peu plus en détail. La colonne A est une description, la B l'IP du subnet, la C la première adresse du RZO, la D la dernière, la E la gateway, la F le VLAN et la G un commentaire.

Les colonnes C, D et E sont remplies par le biais d'une formule automatiquement sur la base de la valeur de la colonne B (forcément car les valeurs sont liées au subnet) et ne nécessitent pas d'action dans le cadre de mon formulaire.

Grace à mon formulaire que je te partage ici un extrait:

image

Quand j'appuie sur le bouton "créer interco FWP", je dois analyser le combobox subnet ip fw et comparer sa valeur avec la colonne B de mon tableau, si la valeur est trouvée (elle le sera forcément car comme je l'ai expliqué cette combobox se remplit avec les valeurs de la colonne B si la colonne A contient "disponible") alors j'aimerai copier la valeur du champs description dans la colonne A de la ligne contenant l'adresse subnet IP FW, copier la valeur de "choisir vlan" en colonne F de la ligne, et commentaire (G) sera remplie avec la valeur de la textbox.

je te donne les noms de mes diverses objets de formulaire:

choisir vlan = vlanfwpbox

description = TextBox5 (je viens de voir que celui la je ne l'ai pas renommé mais peu importe)

subnet IP fw = subfwp (c'est donc avec subfwp.value que j'aimerai travaillé puisqu'il s'agit de la valeur cherchée dans la colonne B de mon sheets ("Subnets prod")

commentaire = commfinal

enfin le bouton créer qui déclenche l'analyse puis la copie s'appelle : create fwp

Sachant qu'à l'heure où nous échangeons mon code pour le bouton "créer" est vide...est ce que les éléments que je t'ai apporté suffisent à m'apporter tes lumières ou pas?

Merci

Bruno

Re-,

Tu comprendras bien que je n'ai nullement envie de recréer quelque chose qui existe déjà...

Comme je l'avais énoncé, " avec des données anonymisées..."

A partir de ton fichier réel, tu supprimes/remplaces ces données, (en gros, tu mets n'importe quoi), et ce, sur une dizaine de lignes représentatives (quelques "Disponibles", d'autres non)

Mais aussi, et surtout, l'usf

@ te relire

Voila, merci de ta patience, j'ai recréé un fichier sensiblement représentatif avec un formulaire bcp plus light, et juste deux onglets dans le excel (le premier qui est celui à renseigner avec les valeurs du formulaire, le second qui est ce qui aide à remplir les combobox). As tu tous les éléments qui t'aident à la compréhension de mon besoin?

Bonjour,

Bon, au vu des images, et de ton fichier, j'ai presque travaillé dans le flou....

Regarde ce premier jet

J'utilise des Tableaux Structurés (Objets bien plus fiables qu'une plage lambda)

J'ai également modifié l'USF, cependant, pour le moment aucun contrôle sur le remplissage des différentes valeurs nécessaires pour créer la nouvelle bulle

Donc, il reste forcément du boulot, mais si tu n'arrives pas à l'adapter à ton fichier réel, il faudra que tu mettes un fichier réaliste

Bon courage

18def-rezo-v0.xlsm (51.80 Ko)

Wha... c'est exactement cela...

Bravo pour le travail.

Mon seul problème, c'est que je ne suis pas détenteur de ce fichier excel, je ne peux le modifier comme je le souhaite. C'est un fichier que l'entreprise se sert depuis des années, et je ne peux me permettre de le "transformer" pour en faire des tableaux structurés. Malheureusement. Bien que je conçois que oui ce que tu as fait est de grande qualité.

Penses-tu qu'il soit possible d'adapter ton code sur un fichier où les tableaux ne sont pas structurés?

Re-,

Transformer une plage normale en TS prend une demie seconde...(cliquer dans une cellule de la plage, Ruban "Insertion", "Tableau")

image

Et ne modifie en rien les données insérées.

Il est bien sûr possible de modifier le code, afin de travailler "à l'ancienne"

Je vais essayer de le faire, mais je ne donne pas de deadline...

Bon appétit

Bon et bien j'y ai regardé de plus près les tableaux sont des tableaux structurés.

J'ai donc adapté le code à mes tableaux...

J'ai juste une erreur (enfin pour le moment ;-))

CreateVRF.vlanfwpbox.List = D_Vlan.Keys
CreateVRF.subfwp.List = D_Subnet.Keys
CreateVRF.VRF_dispo.List = Range("t_TRAV[VRF]").Value

erreur d'exécution 1004

Méthode Range de l'objet global a échoué

Re-,

Un deuxième essai.

Ici, j'utilise des zones nommées dynamiques (voir dans le 1er onglet la liste en colonne M)

Dès que tu as validé une entrée (je n'ai pas mis de contrôles d'intégrité), les combobox se réinitialisent en prenant en compte la dernière modification.

Tu peux ainsi en insérer plusieurs dans la même instance de l'usf

Bonne apm

12def-rezo-v1.xlsm (34.87 Ko)

Excellent. Je vais le mettre en place sur mon fichier de travail. Je te redis cela. Merci 1000 fois

Re-,

Bon et bien j'y ai regardé de plus près les tableaux sont des tableaux structurés.

J'ai donc adapté le code à mes tableaux...

J'ai juste une erreur (enfin pour le moment ;-))

CreateVRF.vlanfwpbox.List = D_Vlan.Keys
CreateVRF.subfwp.List = D_Subnet.Keys
CreateVRF.VRF_dispo.List = Range("t_TRAV[VRF]").Value

erreur d'exécution 1004

Méthode Range de l'objet global a échoué

J'avais pas vu cette intervention de ta part...

Donc, si tu as déjà des TS, on peut continuer dans ce sens

Juste à noter les noms des TS (voire à les créer, comme j'en ai fait dans le 2ème onglet), adapter les noms de colonnes (Soit entourés de [ ], soit entre guillemets dans les .ListColumns("nom de la colonne")

A toi de voir

CreateVRF.vlanfwpbox.List = D_Vlan.Keys
CreateVRF.subfwp.List = D_Subnet.Keys
CreateVRF.VRF_dispo.List = Range("t_TRAV[VRF]").Value

erreur d'exécution 1004

Méthode Range de l'objet global a échoué

je reste avec cette erreur malgré avoir remplacé les noms des TS dans mon code

Je me suis posé une question au niveau de VBA, dans les références cela ne peut il pas provenir d'une library à activer?

Re-,

Non, le msg d'erreur aurait été tout autre.

Lorsque tu déroules en mode pas-à-pas, quelle ligne est surlignée en jaune?

Dans la sub "Init", tu mets un point d'arrêt en cliquant dans la bordure grise (où il y a le point marron) à ce niveau :

image

Puis tu reviens dans le code de l'usf, dans la partie "Initialize" et tu appuies sur la touche F5

Le code va se dérouler jusqu'au point d'arrêt

Tu appuies sur la touche F8 pour avancer en mode pas à pas, et tu regardes quelle ligne est surlignée en jaune

Bon courage

image

j'ai bien créé un TS t_trav

modifier description en designation (le nom de ma colonne)

le reste est correct (enfin de mon point de vue)

Et sinon, peux-tu mettre la liste des noms de ton fichier de travail?

Ruban "Formules", Gestionnaire des noms

image

le tableau sur lequel je travaille est interco_FWP

ainsi que le t_TRAV

Rechercher des sujets similaires à "vba copier contenu formulaire endroit precis fonction"