Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Depuis plusieurs semaines je cherchais une solution afin d'adapter un plan PNG en format Excel pour que les cellules correspondes?!
J'ai enfin trouvé la solution pouvez-vous me dire si c'est la meilleur?
et je dois copier des valeurs du classeur "face out legends" sheets("MEUBLE") et les copier sur le classeur plan avec les cellules qui correspondes aux meubles!
J'ai essayé de le faire avec un range copy mais mon problème est que les Tops changent tous les mois et donc je ne peux pas les associer aux cellules!
avez-vous une idées, comment devrait-on faire.
merci d'avance pour votre aide.
J'ai toujours besoin de vos services et vos connaissances!
Pour l'instant je viens de trouver un moyen en passant par un "rechercheV" mais en formule!
Pouvez-vous m'aider à la transcrire en VBA svp?
Merci d'avance et dite moi si la solution PNG est efficace ?
J'ai pensé a se petit bout de code bien sur a amélioré comme base pour création des Top. je pense qu'il faut crée 3 zone d'image (les associer et les remplires) c'est une ébauche.
Par contre comment vous avez fait pour intégré le PNG sur la feuille Excel ?
VB:
Sub Macro1()
'
' Macro1 Macro
' feuile PNG
Dim Fplan As Worksheet
Set Fplan = Worksheets("PLAN")
' feuile 1 (Base de donnée)
Dim FBd As Worksheet
Set FBd = Worksheets("Feuil1")
' Tableau base feuile1
Tabbase = FBd.Range(FBd.Cells(FBd.Cells(65536, 1).End(xlUp).Row, 1), FBd.Cells(1, 7))
' Message
'création du TOP
Dim txt As Double
txt = InputBox("Qu'elle Numéro de TOP ?")
Dim objShp() As Shape
ReDim objShp(1 To 1, 1 To 3)
Pos = 12.6
Set objShp(1, 1) = Fplan.Shapes.AddShape(msoShapeRectangle, Pos, 40.8, 35.4, 16.2)
objShp(1, 1).Name = "TOP" & txt
objShp(1, 1).TextFrame2.TextRange.Characters.Text = "TOP"
Pos = Pos + (12.6 * 3)
Set objShp(1, 2) = Fplan.Shapes.AddShape(msoShapeRectangle, Pos, 40.8, 35.4, 16.2)
objShp(1, 2).Name = "TOP" & txt
objShp(1, 2).TextFrame2.TextRange.Characters.Text = txt
Pos = Pos + (12.6 * 3)
Set objShp(1, 3) = Fplan.Shapes.AddShape(msoShapeRectangle, (Pos / 3), 40.8 + (40.8 / 2), 35.4, 16.2)
objShp(1, 3).Name = "TOP" & txt
For i = LBound(Tabbase, 1) To UBound(Tabbase, 1)
If Tabbase(i, 7) = txt Then
objShp(1, 3).TextFrame2.TextRange.Characters.Text = Round(CStr(Tabbase(i, 4) * 100), 2) & " %"
Exit For
End If
Next i
End Sub
Merci d'avoir pris le temps de me faire se bout de code.
Qu'est-ce que tu veux dire par 3 zones d'images?
regarde le dernier fichier, c'est plus ou mois ça mais j'aimerai en vba.
Objectif est de créer un code vba sur le classeur "PLAN AVEC TOP VBA.xlsm" et de récupérer le Top 10 dans le classeur "ANALYSE FACE OUT LEGENDS.xlsm) et de faire corresponde les Top avec les numéros de meubles? j'ai réussi à le faire avec des formules(RechercheV) mais avec VBA et avec un autre classeur c'est une chose trop compliqué pour le novice que je suis!?
Concernant le tour de magie pour mettre le PNG dans Excel:
Ouvrir Excel puis dans affichage ; clic sur mise en page, puis clic sur ajouter un en-tête!
Et la comme par magie s'affiche un onglet (en haut) création! clic sur image et choisi l'image que vous voulez? Quand vous insérer l'image; clic sur la feuille et non sur l'en-tête! l'image apparaît et ensuite tu clic sur en-tête et tu clic en haut sur mise en forme de l'image (onglet création).
et vous adapté l'image à votre feuille et le tour est joué...
Qu'est-ce que tu veux dire par 3 zones d'images ? (j'avais une idée mais je sais pas si cela peux correspondre en fonction de votre réponse)
J'ai compris cela :
le classeur "PLAN AVEC TOP VBA.xlsm" doit être en relation avec le classeur "ANALYSE FACE OUT LEGENDS.xlsm), une fois la relation établie, aux moyen d'une macro VBA récupérer les information qui se trouve sur la feuille du classeur ("et de récupérer le Top 10 dans le classeur") ou il y a la base de donné et écrire les informations cible au "TOP 10" dans la feuille du classeur ("PLAN AVEC TOP VBA.xlsm") ou il y a l'image PNG.
J'ai compris et je sais faire :
- Question : faire corresponde les Top avec les numéros de meubles?
les TOP sur la feuille du classeur ("PLAN AVEC TOP VBA.xlsm"), C'est vous qui écrivez a proximité de l'endroit du meuble le TOP correspondant (1 ou 2 ou 3 etc.) dans votre exemple c'est le TOP 10
Car les numéro de meubles c'est une image ?
Vous pouvez me decrire la procédure à la main en pas a pas (je la traduit en VBA)
Exemple : Dans la feuille "Plan" du classeur ("PLAN AVEC TOP VBA.xlsm") à côté du meuble "N°10"
j'écris TOP dans une cellule et à côté de la l'autre cellule 10 est en dessous de celle-ci j'écrit 3,23 % dans une autre cellule ?
Si dans cette exemple vous écrivez dans les deux première cellule (TOP et 10) je peux retrouver les donner
des % et les intégrer dans le classeur Cible depuis le classeur source.
J'ai juste besoin de connaitre la procédure à la main et je la reproduit en VBA tous simplement.
Un grand Merci pour cette astuce avec l'image c'est pas mal je pense me servir de cela par la suite cela ma donner une idée
Concernant le code VBA c'est aussi la magie Excel si j'y arrive mais je vais y arrivé ;-))
Oui effectivement, j'écris sur les cellules juste à coté des meubles qui correspondes au numéros, par rapport aux données dans onglet Meuble (classeur"ANALYSE FACE OUT LEGENDS.xlsm")
les numéros de meubles ne changent pas mais les top et %(CA) oui.
Je viens de terminer un autre fichier avec l'image retravaillé (Juste une merveille), j'ai inséré un code vba (bien sur novice avec onglet"analyse " mais je préfère avec un autre classeur) !
Il faudrait aussi que quand le meuble ne fait pas parti du top 10, le" top" ne dois pas s'afficher!
et que si le meuble, exemple: 106 passe au top 20 = case vide !
j'ai compris
Qu'est-ce que tu veux dire par 3 zones d'images ?
j' crée 3 zone de texte indépendante :
La première ou c'est écrit Top
La deuxième ou c'est écrit (Le numéro de top non figé soit 10 ou plus tard 20) = Remplis par vous.
La troisième ou le %(CA) s'inscrit Automatiquement
C'est trois étiquette se place avec aisance dans le dessin avec l'avantage (de créer un ID pour c'est 3 zone de texte est les associer entre elle "Le numéro du meuble pour création de la relation entre elle)
facile à placer dans le dessin (avec l'option de les grouper)
Bien sure si vous renseigner pour le meuble le passage en Top 20 (cette même étiquette se masque)
Une option (tous démasquer = pour remplir les nouveaux numéros de top et réinitialisé)
a réfléchir mais c'est faisable (par contre par remplissage dans les cellules ça ne vas pas exemple fusionner les cellules c'est pas terrible et pour le reste aussi) cela doit être dynamique.
Cette solution peux être correcte ?
Le top 10 change ! le mois prochain le meuble 402 passera en 9éme positon peut etre?!
Voila pourquoi je fais un rechercheV pour avoir la position (top) par rapport aux meubles
Je te confirme que je note à la main le mot TOP.
j’espère que je suis assez clair?
I) Partie 1 "La créations des étiquettes à déplacer à côté du N° du meuble sur la feuille excel"
Le module « CreationEtiquette » crée 3 zones de texte :
- Top -----------------> (Dans l'exemple cette étiquette portera le nom de 102.1)
- Le numéro du Top -----------------> (Dans l'exemple cette étiquette portera le nom de 102.2)
- le % du CA -----------------> (Dans l'exemple cette étiquette portera le nom de 102.3)
Ceci est remplis automatiquement.
C'est 3 étiquettes lors de la création demande le numéro de Meuble.
Chacune de ces étiquette porte un nom (le Numéro du meuble suivie d'un point et un numéro)
exemple : Meuble N° 102 donc 3 étiquettes (102.1, 102.2,102.3) voir les numéro correspondant pour chaque étiquette plus haut.
Chaque étiquettes a un identifiant unique
Donc une fois créer vous pouvez déplacer c'est 3 étiquettes et les positionné à coté des meuble dans le dessins de la feuille excel (Bien plus souple que d'écrire dans des cellules excel car aucun lien entre le dessin et excel)
Faire cela pour chaque création (les déplacer par groupe de 3 et les positionné dans le dessins)
Nota : comme chaque étiquettes à un identifiant qui correspond au meuble aucun doublon possible
soit pour le meuble 102 les 3 étiquettes créer une fois et sortie de procédure si elle existe déjà donc
pas de doublon !
L'idéal serait de grouper c'est 3 étiquettes (puis donner un nom a se groupe) j'ai pas explorer encore si une personne du forum c'est faire cela pourrais être plus souple pour le déplacement de l'ensemble mais il y a un dysfonctionnement quand j'ai essayé donc pour l'instant c'est en attente
Module :
VB:
Sub CreationEtiquette()
' Création d'étiquette !
Dim ObjSnap As Shape
' Feuille cible
Dim F1 As Worksheet
Set F1 = Worksheets("PLAN")
' Feille source
Dim F2 As Worksheet
Set F2 = Worksheets("analyse")
Dim TabBd() As Variant
TabBd = F2.Range(F2.Cells(1, 1), F2.Cells(F2.Cells(65536, 1).End(xlUp).Row, 7))
Dim Meuble As Double
Meuble = InputBox("Inscrire le numéro du Meuble", "Choix Numéro du Meuble ?")
' -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
' si l'étiquette existe déjà sortie de la procédure (2vite de créer plein d'etique identique)
Dim shp As Shape
For Each shp In F1.Shapes
'MsgBox shp.Name
If Meuble = Split(shp.Name, ".")(0) Then
Exit Sub
End If
Next shp
' -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim TabMeub(1 To 3) As Variant
Dim i As Integer
For i = 1 To 3
Set ObjSnap = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 638, 24.75, 32, 18)
ObjSnap.Name = Meuble & "." & i
' Tableau pour grouper les shapes
TabMeub(i) = Meuble & "." & i
' Fonction
remplissage F1, F2, TabBd, ObjSnap, i
Next i
' -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
' Grouper pas en fonction
' F1.Shapes.Range(Array(TabMeub(1), TabMeub(2), TabMeub(3))).Select
' Selection.ShapeRange.Group.Select
' ObjSnap.ParentGroup.Select
' ObjSnap.ParentGroup.Name = Meuble
' 'MsgBox ObjSnap.ParentGroup.Name
End Sub
Sub remplissage(F1 As Worksheet, F2 As Worksheet, TabBd() As Variant, ObjSnap As Shape, i As Integer)
' Création
If i = 1 Then
F1.Shapes.Range(Array(ObjSnap.Name)).TextFrame2.TextRange.Characters.Text = "Top"
ElseIf i = 2 Then
' Recherche
For K = LBound(TabBd, 1) To UBound(TabBd, 1)
If TabBd(K, 1) = CDbl(Split(ObjSnap.Name, ".")(0)) Then
F1.Shapes.Range(Array(ObjSnap.Name)).TextFrame2.TextRange.Characters.Text = TabBd(K, 7)
F1.Shapes.Range(Array(ObjSnap.Name)).IncrementLeft 35
F1.Shapes.Range(Array(ObjSnap.Name)).ScaleWidth 1.1, msoFalse, msoScaleFromTopLeft
End If
Next K
Else
For K = LBound(TabBd, 1) To UBound(TabBd, 1)
If TabBd(K, 1) = CDbl(Split(ObjSnap.Name, ".")(0)) Then
F1.Shapes.Range(Array(ObjSnap.Name)).TextFrame2.TextRange.Characters.Text = Round(TabBd(K, 4) * 100, 2) & " %"
F1.Shapes.Range(Array(ObjSnap.Name)).IncrementTop 20
F1.Shapes.Range(Array(ObjSnap.Name)).IncrementLeft 28 / 2.6
F1.Shapes.Range(Array(ObjSnap.Name)).ScaleWidth 1.7, msoFalse, msoScaleFromTopLeft
End If
Next K
End If
End Sub
II) Partie 2 "La mise à jours des étiquettes en relation avec la base de données qui change"
Ici la macro cherche l'étiquette en rapport avec la base soit pour exemple parmi toute les étiquettes créer dans la feuille celle qui correspond est fait la mise a jour du Numéro du Top et % CA.
Soit pour l'étiquette qui correspond au meuble 102 (Dont les 3 étiquettes doivent se positionné à côté du meuble 102 en question, l'étiquette 102.2 sera modifier pour sont numéro du Top et l'étiquette 102.3 sera modifier pour le CA %
Module :
VB:
Sub MiseAJourBd()
' Mise à jour des étiquettes !
Dim ObjSnap As Shape
' Feuille cible
Dim F1 As Worksheet
Set F1 = Worksheets("PLAN")
' Feille source
Dim F2 As Worksheet
Set F2 = Worksheets("analyse")
Dim TabBd() As Variant
TabBd = F2.Range(F2.Cells(1, 1), F2.Cells(F2.Cells(65536, 1).End(xlUp).Row, 7))
' -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
' si l'étiquette existe déjà sortie de la procédure (2vite de créer plein d'etique identique)
Dim shp As Shape
For l = LBound(TabBd, 1) To UBound(TabBd, 1)
For Each shp In F1.Shapes
If CStr(TabBd(l, 1)) = Split(shp.Name, ".")(0) Then
'MsgBox Split(shp.Name, ".")(0)
If Split(shp.Name, ".")(1) = 2 Then
F1.Shapes.Range(Array(shp.Name)).TextFrame2.TextRange.Characters.Text = TabBd(l, 7)
ElseIf Split(shp.Name, ".")(1) = 3 Then
F1.Shapes.Range(Array(shp.Name)).TextFrame2.TextRange.Characters.Text = Round(TabBd(l, 4) * 100, 2) & " %"
End If
End If
Next shp
Next l
End Sub
Voilà c'était l'idée des 3 images que j'ai mis en oeuvre.
C'est peut être complexe mais j'espères que j'ai aussi était clair enfin j'ai fais au mieux ;-))
Merci d'avoir pris du temps à trouver une solution!
Je comprends mieux l'idée des 3 images que tu as mis en oeuvre.
Je suis à l'étranger et je reviens mardi!
Je suis impatient de voir ça...
Encore merci et à mardi.
Bonsoir,
Si l'idée est correct se que je pense, C'est facile de faire une mise en forme texte couleur et transparence de l'étiquette. (a développer selon les besoins)
Pour les restriction au Top ne correspondant pas (Suppression des étiquettes ou mise en transparence = rendre invisible)
Pour grouper les 3 zones de texte ou les dégrouper (j'ai trouvé)
Je pense qu'il faut commencer par placé les trois étiquette sur le fichier (faire une mise en forme texte) pour voir le resultat
Nombreuse sont les possibilités car la base me semble bonne
Bon séjour
Laurent950
Content de voir que nous avancons sur le projet qui est comme tu le dit sans limite!
Tu veux que je place les trois étiquettes sur le plan ou tu reprends le plan avec les top du dernier fichier?
Merci encore.
Bonne journée,
Bonjour,
La construction de votre travai vous appartient et je sais pas le but final de se travail pour l élaboré et le finaliser.
Est ce qu'il y a d'autre plans associés au top ? (Si oui associer les top automatiquement a proximité des meuble (faisable)
Enfin ont peux inclure le meuble dans une autre zone de texte pour affiché la description et le CA %
Enfin pas de limite
Il faut une base et pas la retravailler pour faire cela en automatique.
Tous dépend de la nature de se document et sont utilité.
Je vous laisse la suite pour l'orientation de cette feuile de calcul
Je suis Ok pour vous aidez pas de soucis
J ai compris pour le code et l adapter a vos besoins c'est pas le plus compliqué.
Prenez mon dernier fichier et reposter le avec vos idée.
Peux être que d aute partageront aussi avec des idée
Laurent
Il n'y a pas d'autre plans associés au top! juste les meubles qui sont sur le plan.
J'aimerais vraiment que ça se mette à proximité des meubles en automatique parce que l'analyse change tous les mois (mais les meubles ne bougent pas).
Quand vous dites "Il faut une base et pas la retravailler pour faire cela en automatique" de quel base on parle?
merci pour votre aide Laurent.
Setila
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.