Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

renommer beaucoup d'image

  • Initiateur de la discussion Initiateur de la discussion nounours49
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nounours49

Guest
bonjour à tous les xldiens

j'ai des images nommer de la facon suivante "image 65464" et j'aimerais par macro les renommer en fonction de leurs références dans le style toto6236 sans espace
je m'en remet à vos lumière
merci d'avance
 

Pièces jointes

Re : renommer beaucoup d'image

Bonsoir


A tester pour ce qui est du renommage
Code:
Sub test()
Set formimgs = Sheets(1).Shapes
    For Each shp In formimgs
        For i = Range("B65536").End(xlUp).Row To 1 Step -1
        shp.Name = "image" & Cells(i, 2).Value
        MsgBox (shp.Name)' a commenter 
        Next i
    Next
End Sub
 
Re : renommer beaucoup d'image

Bonsoir nounours49

Si j'ai bien compris le problème, cette simple procédure devrait suffire :
Code:
[SIZE=2][COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Sub[/COLOR] Traitement()
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Img [COLOR=NAVY]As Object
    For Each[/COLOR] Img [COLOR=NAVY]In[/COLOR] ActiveSheet.DrawingObjects
        [COLOR=NAVY]With[/COLOR] Img.TopLeftCell
            Img.Name = "image" & .Offset(0, -1).Text
            Img.Left = .EntireRow.Range("A1").Left
        [COLOR=NAVY]End With
    Next[/COLOR] Img
[COLOR=NAVY]End Sub[/COLOR][/SIZE]
Cordialement,

EDITION : pardon Staple1600, je ne t'avais pas vu...
 
Dernière édition:
Re : renommer beaucoup d'image

Re

Bonsoir myDearFriend!

tu peux, stp, expliquer pourquoi
Img.TopLeftCell

Merci

edit: je crois que je viens de comprendre en essayant ta macro
 
Dernière édition:
Re : renommer beaucoup d'image

Bonsoir Staple1600,

Oui, TopLeftCell est une propriété qui te renvoie la cellule se trouvant sous le coin supérieur gauche de l'objet. Et comme les images de notre ami nounours49 semblent être - incluses - entièrement dans une seule cellule, on peut aussi utiliser BottomRightCell (pour le coin inférieur droit) ce qui reviendrait au même dans ce cas.

Cordialement,
 
Re : renommer beaucoup d'image

Re

Et apparemment il n'y a pas de TopRightCell

Si on voulait en utilisant ta macro

déplacer les images en colonne D (par exemple)

Comment s'y prendre?

edit : Img.Left = .EntireRow.Range("D1").Left

En fait cela aligne mais n'ajuste pas la taille de la cellule
 
Dernière édition:
Re : renommer beaucoup d'image

Re,

Chaque image étant initialement en colonne C, on fait tout simplement :
Code:
[SIZE=2]            Img.Left = Img.TopLeftCell.Offset(0, 1).Left[/SIZE]
(TopLeftCell ne te donne pas la cellule de gauche, mais la cellule située sous le coin en haut et à gauche de l'image à l'origine)

Cordialement,

EDITION : Arf, tu ne me laisses pas le temps de te répondre lol
oui, cela ne joue aucunement avec la taille de la cellule.
 
Dernière édition:
Re : renommer beaucoup d'image

Re

J'ai donc modifié ainsi
Img.Left = .EntireRow.Range("D1").Left

Tu proposes
Img.Left = Img.TopLeftCell.Offset(0, 1).Left


Quelle est la différence?

Question subsidiaire:

Pourquoi c'est Left qui a été priviligié dans VBA

J'ai été voir dans l'aide VBA
Left
Renvoie ou définit la position de l'objet spécifié en points

Il n'y pas trace de Right

C'est surement une logique de developpeur qui m'échappe...
 
Re : renommer beaucoup d'image

Entre :
Img.Left = .EntireRow.Range("D1").Left

Et :
Img.Left = Img.TopLeftCell.Offset(0, 1).Left

Il n'y a aucune différence si l'image est bien située en colonne C à l'origine. C'est tout simplement ici l'illustration de l'utilisation des références absolues pour toi et des références relatives pour moi. Dans un certain contexte uniquement, les deux donneront la même chose.

Pour ta question subsidiaire, je pense qu'on trouve l'explication dans les conventions qu'on pratique tous et qu'on rencontre partout et tous les jours : le coin en haut et à gauche de l'objet sert de référence pour la même raison que tes cellules de feuilles Excel sont référencées en commençant par le haut et la gauche, que les coordonnées de ton écran commencent également en haut et à gauche, chez nous on écrit aussi normalement en commençant en haut et à gauche d'une feuille de papier, etc...
Au contraire, je pense que là, pour une fois, le raisonnement du développeur rejoint la logique "en générale"...

Cordialement,
 
Re : renommer beaucoup d'image

bonjour Staple1600 et myDearFriend!

merci tout dabord d'avoir repondu
j'ai essayé vos macros, mais j'ai un problème avec celle de myDearFriend!
en effet sur mon fichier nounours elle me copie bien l'image et la renomme mais j'ai ensuite une erreur d'execution 1004
et dans vba j'ai la ligne Img.Name="image"&.offset(0,-1).Text surligner
j'essaye de voir pourquoi
autrement l'idée ext excellente et c'est tout à fait ce que je désire

encore merci de votre aide
 
Re : renommer beaucoup d'image

Bonjour nounours49, Staple1600, le Forum,

Erreur 1004 ?

nounours49, tu n'aurais pas laissé "trainer" un objet dessin flèche sur ta feuille par hasard ? (une flèche comme celle reliée à tes explications dans ton exemple d'origine, qui pointe sur la cellule A1)

Si c'est le cas, alors ne cherche pas plus loin... Comme tu as pu le lire plus haut dans ce fil, TopLeftCell fait référence au coin supérieur gauche d'un objet graphique... or un objet flèche ou un simple trait ne possède pas de coin supérieur gauche ! 😉

Cordialement,
 
Re : renommer beaucoup d'image

bonjour myDearFriend! ,Staple1600 et à tout le monde

exact, j'aurais du me mefier maintenant je cernerait les differents "objets" que je peux avoir dans une feuille
par contre j'ai un autre petit soucis
j'aimerais faire la même chose mais sur une feuille ou il y a déjà des images dans la colonne A c.a.d lors ajouter de nouvelle image et pouvoir éxécuter la macro (selectionner les images dans la colonne c pour les mettre dans la a avec les meme conditions)
actuellement je ne peux pas le faire
exemple dans le fichier joint en sachant qu'il peut y avoir d'autre image dans la colonne a et dans la c
en attendant j'essairais de l'adapter en me servant d'une colonne intermediaire (deplacer les images de a vers f avec second nom en e puis inserer nouvelle image et enfin les renvoyer vers a)
je te remerci encore de t'interresser à mon problème (je sais que tu est très actif, tu m'a déjà dépanné grace à tes réponses dans d'autre post)

🙄
 

Pièces jointes

Re : renommer beaucoup d'image

Bonsoir nounours49, Staple1600,

Dans ce cas, l'échange de la ligne :
Code:
[SIZE=2]    Img.Name = "image" & .Offset(0, -1).Text[/SIZE]
Par la ligne :
Code:
[SIZE=2]    Img.Name = "image" & .EntireRow.Range("B1").Text[/SIZE]
devrait suffire.

Cela dit nounours49 Attention ! J'ai précisé que cette procédure devait normalement se trouver dans DANS UN MODULE DE CODE STANDARD et non dans ThisWorkbook comme tu l'as mis dans ton exemple.
Ca fonctionne comme tu l'as mis oui, mais ça ne se fait pas. Les modules de code "Private" comme ceux des Feuilles, de l'objet ThisWorkbook ou de Userform sont réservés normalement aux procédures évènementielles (Calculate, Change, SelectionChange, Activate, Open, etc....).

Cordialement,
 
Re : renommer beaucoup d'image

un grand merci myDearFriend!

désormais je ferais plus attention à l'endroit ou je mettrait mes macros en tenant compt de remarque
ta macro marche du tonnerre, je vais me renseigner sur la fonction entirerow

j'ai une derniere question : la macro marche avec tous les objets de la feuilles mais est il possible de la faire fonctionner qu'avec des images d'une certaine colonne
en attendant tu m'a enlevé une belle épine du pied car changer le nom de plus de 200 image et etre sur de les avoir toutes faites me semblait pénible
merci encore
😛
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
821
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…