"L'accès à ce membre n'est possible que pour un groupe"
Version imprimable
"L'accès à ce membre n'est possible que pour un groupe"
ok
bon ben on y va a l'ancienne alors
change la macro pour celle ci dans le mien !!! pas le tien
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Option Explicit Sub test() Dim tabloimage(), WindoWname As String, WbKSource As Workbook, delta As Long, shap, i As Long delta = 8 WindoWname = ThisWorkbook.Name Set WbKSource = Workbooks.Open(ThisWorkbook.Path & "\ES-Catalogue.xlsm") 'on rassemble les images dans un tableau With WbKSource.Sheets("Param Services") For Each shap In .Shapes If shap.TopLeftCell.Row >= 1 And shap.TopLeftCell.Row <= 50 And shap.TopLeftCell.Column = 4 Then i = i + 1: ReDim Preserve tabloimage(1 To i): shap.Name = "B" & delta: tabloimage(i) = shap.Name: delta = delta + 5 End If Next With .Shapes.Range(tabloimage): .Group.Copy: .Ungroup: End With End With Windows(WindoWname).Activate With ActiveSheet Cells(8, 2).Select: .Paste: ' .Shapes(1).Ungroup For Each shap In .Shapes If shap.Type = msoGroup Then shap.Ungroup Next For Each shap In .Shapes If shap.Name <> "Button 1" Then shap.Left = .[B1].Left: shap.Top = .Range(shap.Name).Top Next End With 'on ferme la source image on en a plus besoins Application.DisplayAlerts = False WbKSource.Close End Sub
Bonne nouvelle !
ça marche parfait avec tes fichiers, pas avec les miens
c'est quoi la différence ? LA VERSION ?
j'ai essayé avec ton fichier et mon catalogue réel ça marche pas non plus
re
deja avant tout vire tout tes codes dans le catalogue dans les exemples que tu m'avais donné ils servait a rien
sauve le en xlsx et change l'extention dans le chemin de ma macro
et oui c'est une question de version plus precisement d'accesibilité des object dynamiques
la liste interne des object dans le fichier ne semble pas semettre a jour correctement dans 2016 j'ai constaté cela sur 4 exercices differents
ce qui fait que si tu fait par exemple
msgbox .shapes.count et que tu obtiens 2 par exemple
et que tu fait msgbox .shapes(1) tu a une erreur car il ne le trouve pas
d'ou ma derniere solution proposé avec une boucle et un if sur le type msogroup dans le cadre de ton projet
sincerement c'est la version la plus pourrie de excel j'espere que ms va revenir a l'essentiel surtout a ce qui fonctionne sinon je resterais sur 2007
j'ai testé plein de truc ypers simples avec cette version et j'ai 50% d'erreurs injustifiées
enfin bref pour les debutants qui savent pas ou chercher ,ca doit etre un enfer
Ok je vais faire ca, mais je vais regarder avant l'impact de changer l'extension en xlsx pour le catalogue, il est utilisé ailleurs par excel avec l'extension xlsm (dans le gestionnaire de nom par exemple)
Ca serait gênant de laisser le catalogue en xlsm ?? même s'il n'a pas de macro
enfin je vais devoir réduire les photos du catalogue (j'ai mis la taille "vignette" pour faciliter les tests dans le catalogue de test)
il faut donc inclure qq chose comme ça (ce que j'avais avant) dans ton code
Code:
1
2Selection.ShapeRange.ScaleHeight 0.4693333333, msoFalse, msoScaleFromTopLeft
re
tu redimentionne l'image copié par le height de la cellule cible le reste suit normalement je vais verifier
oui c'est sur que si tu touche a ce catalogue par d'autre fichier et d'autre macro il faut corriger l'extention
et ouis c'est mieux un xlsx si il y a pas de macro dans le fichier
autant enlever tout les doutes
je reviens je vais tester un scale autrement
tiens regarde teste avec ces deux fichier
dans le catalogue les 3 images ont une taille differentes pourtant dans le fichier edition......
Ca marche super bien, un grand merci,
je vais maintenant compiler tout ça et je reviendrai pour te donner les nouvelles finales…
Si je pars de tes fichiers et que je copie les feuilles des miens dedans est-ce que cela va éliminer les pb que j'ai ? C'est ma fille qui utilise pour sa petite société les fichiers que je lui fais, elle a aussi excel 2016, donc cela devrait fonctionner chez elle comme chez moi ?
Mauvaise nouvelle,
j'ai fais plusieurs tests de suite,
avec tes 2 fichiers ça marche très bien, sitôt que je remplace ton fichier catalogue par le mien réel ça plante en erreur 1004
je te joins un extrait d'une ligne de mon catalogue en Xlsx, ça plante avec erreur 1004 sur cet extrait
re
c'est normal l'erreur 1004 il faut au moins 2 image dans catalogue
J'ai le même pb avec 3 images dans le catalogue (ci-joint)
dans tous les cas de figure j'ai erreur 1004 sitôt que je mets un extrait de mon catalogue, en remettant juste le tien c'est bon...
re
heu..... dis moi un peu regarde tu ce que tu fais!!??????
y a pas quelque chose qui te derange dans cette capture???????
Pièce jointe 381452
non? tu es sur!!
OUI !!
tu as mis le doigt dessus…
en fait la colonne "C" est masquée pour ne pas la casser car elle contient une formule pour Excel pour les INDIRECT(RECHERCHEV) (voir le fichier joint)
Le soucis est qu'en fait avec une largeur 0 de la colonne C fait que l'image en colonne D à l'air d'être en C...
J'ai simplement affiché cette colonne C et là ça marche…
Quelle énergie pour ça …
merci je reviens quand tout est fini te confirmer
re
parce qu'elle on été inserer dans le catalogue dans cet ordreCitation:
elles s'affichent dans l'ordre dans la page d'édition à l'exécution de la macro :
1, 2, 3, 8, 9 ,5 ,6 ,7
re,
Ok compris, et si je les veux dans l'ordre dans lequel elles sont dans le catalogue, ?
il faut alor boucler non pas sur les shapes mais les topleftcell des shapes
je regarderais tout a l'heure
c'est vraiment très sympa de ta part,
j'ai testé en faisant un tri des lignes sur la valeur de la colonne A (je le fais régulièrement quand le catalogue évolue), mais ça ne résout pas le pb
non c'est plus simple que ca
voila c'est résolu juste le temp d'ecrire pour modifier
maintenant meme si ils n'ont pas été insérer dans l'ordre il seront dans le meme ordre visuel que catalogue
le principeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Option Explicit Sub test() Dim tabloimage(), WindoWname As String, WbKSource As Workbook, delta As Long, shap, i As Long delta = 8 WindoWname = ThisWorkbook.Name Set WbKSource = Workbooks.Open(ThisWorkbook.Path & "\ES-Catalogue.xlsx") 'on rassemble les images dans un tableau With WbKSource.Sheets("Param Services") ReDim tabloimage(1 To 50) For Each shap In .Shapes If shap.TopLeftCell.Row >= 1 And shap.TopLeftCell.Row <= 50 And shap.TopLeftCell.Column = 4 Then i = i + 1: tabloimage(shap.TopLeftCell.Row) = shap.Name End If Next ReDim Preserve tabloimage(1 To i) 'on elimine les item du tabloimage vides With .Shapes.Range(tabloimage): .Group.Copy: .Ungroup: End With End With Windows(WindoWname).Activate With ActiveSheet Cells(8, 2).Select: .Paste: ' .Shapes(1).Ungroup For Each shap In .Shapes If shap.Type = msoGroup Then shap.Ungroup Next For Each shap In .Shapes If shap.Name <> "Button 1" Then shap.Left = .[B1].Left: shap.Top = .Range("B" & delta).Top: shap.Height = .Range("B" & delta).Height: delta = delta + 5 Next End With 'on ferme la source image on en a plus besoins Application.DisplayAlerts = False WbKSource.Close End Sub
je créé le tableau de 50 direct
je place les image avec l'index de ligne de topleftcell dans le tableau (celle qui est en ligne 4 ira dans tabloimage(4) etc.....
ensuite comme je ne met plus leur destination comme nom l'incrementation delta se fait plus dans la boucle de regroupement mais celle du replacement
tu va y arriver c'est bon ?
Attention tout de meme avec cette methode il faut pas que entre 2 images(lignes) il y ai une cases vide
voila
J'ai fais le test plusieurs fois sur 8 lignes, je supprime une image et la remets , l'image récréée (la plus récente) arrive à la ligne 8 (à la fin) et non à sa place (la première) , l'affichage n'est pas dans l'ordre du catalogue
Une petite question un peu indiscrète, c'est ton métier informaticien ?
non pas du tout c'est un obi
je regarderais ca tout a l'heure je suis sur un autre projet la