[vba Excel 97]

[vba Excel 97] - VB/VBA/VBS - Programmation

Marsh Posté le 28-04-2006 à 10:18:25    

bonjour
je voudrais faire une macro qui ajoute automatiquement a toute les cellule non vide d'une colonne une image en commentaire qui ai le meme nom que le contenu de chaque cellule.
g trouvé cette source mais je n'arrive pas a la faire fonctionner car je suis débutant en vba
 
Sub Macro2()
Dim nom$
For Each C In Selection
nom = C.Value
With C
.AddComment
.Comment.Shape.Fill.UserPicture ActiveWorkbook.Path & "\" & nom & ".jpg"
End With
Next
End Sub
 
si qqun pouvais me donner un petit coup de main ca serais super cool
merci d'avance

Reply

Marsh Posté le 28-04-2006 à 10:18:25   

Reply

Marsh Posté le 30-04-2006 à 00:30:37    

Bonjour,  
 
  Le code si dessus est correcte, il faut seulement que tu vérifie que le chemin d' accès (activeworkbook.path) est bien celui de la photo. Et que la valeur de chaque cellule correspond bien à un nom (est ce bien ce que tu veux dire).
Ensuite, tu peux rajouter une ligne de code qui te séléctionne automatiquement la colonne active (Columns(ActiveCell.Column).Select) et une condition qui te fasse le trie des cellule vide ou pas (if not c="" then). En outre, ajoute un 'on error resume next' au début, car le débugger interrompera le programme à chaque fois que tu tomberas sure une cellule ayant déjà une comment.
 
 
 

Reply

Marsh Posté le 02-05-2006 à 08:30:56    

bonjour,
j'ai réussi a faire marcher, merci beaucoup
j'ai une dernière petite question:
est ce que on peut faire automatiquement un redimensionnement du commentaire pour que les photos ne soit pas disproportionnées ??  

Reply

Marsh Posté le 02-05-2006 à 09:02:17    

Une autre question qui ressemble bcp a la première.
je voudrais ajouter tjrs automatiquement dans les cellule non vide un lien hyper texte vers des pdf je voulais savoir si la source d'en haut est recupérable pour faire cela  
merci de me répondre
ca me serais très utile
merci

Reply

Marsh Posté le 03-05-2006 à 14:10:40    

Salut,  
 
Normalement, il n' y a pas de problème pour les liens hyper texte. Pour le rediemensionnement du commentaire, j' ai trouvé :  
 
ActiveCell.Comment.Shape.PictureFormat
 

Reply

Marsh Posté le 03-05-2006 à 16:16:03    

merci de ton aide mais j'arrive pas a faire marche pictureformat
je sais pas ou l'inserer dans le code située dans le 1er msg...
je sais pas je dois ètre vraiment très nul :)
il faut ke je rajoute la ligne entière avant le end with ? g essayé ca marche pas.

Reply

Marsh Posté le 06-05-2006 à 01:24:26    

Bonjour,  
 
Tu devrais la placer après l' insertion de l' image (.Comment.Shape.Fill.UserPicture...).
Pour pictureformat, je n' ai pas accès au commande dependant de ce membre (Brightness, contarst, etc...).
J' ai essayé en faisant ceci :  
ActiveCell.Comment.Shape.PictureFormat=x
 
 Et de modifier la taille du commentaire avec width et height :  
ActiveCell.Comment.Application.Width/Height
Mais si ont arrive à obtenir la taille du commentaire de cette façon, ont arrive pas à la changer

Reply

Marsh Posté le 19-05-2006 à 11:27:19    

bonjour tout le monde,
j'ai enfin réussi a faire ce que je voulais voila la source
Il y a qques modification que j'ai effectuer...
 
Sub ajoutImageCommentaire()
Dim Repertoire As String
Dim Rep As Variant
Dim C As Range
With Sheets("Appareils" )
On Error Resume Next
For Each C In Range("F1:F" & Range("F65536" ).End(xlUp).Row)
Repertoire = ActiveWorkbook.Path & "\Photos\" & Trim(C.Value) & ".jpg"
If Dir(Repertoire) <> "" Then
If Not C = "" Then
With C.Offset(0, -1)
.AddComment
.Comment.Shape.Fill.UserPicture Repertoire
.Comment.Visible = False 'Masque le commentaire
End With
Rep = ActiveWorkbook.Path & "\Photos\"
With C.Offset(0, -1).Comment.Shape
.Width = Val(dimensionsImage(Rep, Trim(C.Value) & ".jpg", 27))
.Height = Val(dimensionsImage(Rep, Trim(C.Value) & ".jpg", 28))
'les index 27 et 28 de la methode GetDetailsOf ,
'permettent de recuperer les dimensions de l'image...
'bien qu'ils soient indiqués comme "Not Used" dans l'aide Microsoft...
 
End With
End If
End If
Next
End With
End Sub
Public Function dimensionsImage(Chemin As Variant, nomImage As Variant, Itm As Integer)
Dim objShell As Object, strFileName As Object
Dim objFolder As Object
Set objShell = CreateObject("Shell.Application" )
Set objFolder = objShell.nameSpace(Chemin)
Set strFileName = objFolder.Items.Item(nomImage)
dimensionsImage = objFolder.getDetailsOf(strFileName, Itm)
Set objShell = Nothing
Set strFileName = Nothing
Set objFolder = Nothing
End Function

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed