vba excel : utiliser la proprièté name d'une cellule

vba excel : utiliser la proprièté name d'une cellule - VB/VBA/VBS - Programmation

Marsh Posté le 07-05-2008 à 12:01:54    

Bonjour,
 
Voila j'aimerai savoir comment faire pour utiliser la propriété Name pour une cellule. En effet, j'aimerai associer un "identifiant" à chaque cellule. Cet identifiant est un identifiant que je récupère dans un fichier XML.
 
Voila le code que j'ai testé :  

Code :
  1. Range("Taches" ).Offset(indice, 0).Name = CStr(resource.parentNode.parentNode.getAttribute("UID" ))


 
Seulement avec ceci, Excel me sort une erreur :  

Citation :

Erreur 1004 : erreur définie par l'application ou l'objet


 
Je ne comprends pas d'où ca vient ...  
Merci pour votre aide ...

Reply

Marsh Posté le 07-05-2008 à 12:01:54   

Reply

Marsh Posté le 07-05-2008 à 14:52:37    

ne passe pas par la propriété Name du chaque range...
mais par la collection : ActiveWorkbook.Names
 
donc si tu veux associer une liste d'identifiant a des cellules fait une boucle sur "ActiveWorkbook.Names.Add" exemple:

Citation :


ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=Feuil1!R9C3:R16C7"


Reply

Marsh Posté le 07-05-2008 à 15:09:18    

Mais je veux donner le nom qu'à une seule cellule à la fois...
 
J'ai bien essayé :  

Code :
  1. ActiveWorkbook.Names.Add Name:=CStr(resource.parentNode.parentNode.getAttribute("UID" )), RefersToR1C1:="=" + Range("Taches" ).Offset(indice, 0).Name


mais ca ne fonctionne pas mieux .
 
Le problème vient peut être du fait que l'identifiant que je veux inséré est en réalité une chaine de caractères un peu spéciale du genre :  
"AJ3I-%'?! ..."
Ne faut-il pas respecter certaines règles pour les Names ?  
 
 

Reply

Marsh Posté le 07-05-2008 à 15:35:39    

Didine981 a écrit :

Mais je veux donner le nom qu'à une seule cellule à la fois...
 
J'ai bien essayé :  

Code :
  1. ActiveWorkbook.Names.Add Name:=CStr(resource.parentNode.parentNode.getAttribute("UID" )), RefersToR1C1:="=" + Range("Taches" ).Offset(indice, 0).Name


mais ca ne fonctionne pas mieux .
 
Le problème vient peut être du fait que l'identifiant que je veux inséré est en réalité une chaine de caractères un peu spéciale du genre :  
"AJ3I-%'?! ..."
Ne faut-il pas respecter certaines règles pour les Names ?  


 
premièrement pour :
"CStr(resource.parentNode.parentNode.getAttribute("UID" ))"
ça renvois un identifiant bizare tu dis  ? genre  "AJ3I-%'?! ..."
 
-> essaye d'affecter un identifiant à la main dans une feuille vierge pour voir si ça passe...
(ça te fera une erreur de type "Vous devez taper une référence valide (...)" )
 
 
 
ensuite pour :

Code :
  1. RefersToR1C1:="=" + Range("Taches" ).Offset(indice, 0).Name


me parait faux, la propriété Name du range ne renvoie pas l'adresse absolue (enfin je pense pas)
j'aurai plutot utiliser un truc du style :
 
 

Code :
  1. Dim strName As String
  2. Dim strRefersToR1C1 As String
  3. strName = CStr(resource.parentNode.parentNode.getAttribute("UID" ))
  4. With ActiveSheet
  5.    strRefersToR1C1 = "=" & .Name & "!" & .Range("A10:F16" ).Offset(1, 0).Address(, , xlR1C1)
  6. End With
  7. ActiveWorkbook.Names.Add Name:=strName, RefersToR1C1:=strRefersToR1C1


 
bref utiliser la propriété Address d'un range au lieu de name...


Message édité par Xxxaaavvv le 07-05-2008 à 15:36:52
Reply

Marsh Posté le 07-05-2008 à 15:45:11    

J'ai fait le test dans une feuille vierge, et en effet, ce n'est pas un identifiant valide :(
 
Il va donc falloir que je trouve une autre solution ...  
 
Merci pour ton aide, ca me servira surement pour la suite :)

Reply

Marsh Posté le 07-05-2008 à 17:31:41    

  1. RefersToR1C1:="=" + Range("Taches" ).Offset(indice, 0).Name
 
et si a la place du + tu mets un &, ca change quelquechose ?


Message édité par 86vomito33 le 07-05-2008 à 17:32:14
Reply

Sujets relatifs:

Leave a Replay

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