[Résolu]Sélectionner mes zones de texte avec VBA pour excel

Sélectionner mes zones de texte avec VBA pour excel [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 19-02-2008 à 08:23:53    

Bonjour à tous,
 
J'ai trouvé sur ce site: http://www.office-loesung.de/ftopic98893_0_0_asc.php
cette macro qui me permet de sélectionner plusieurs zones de texte à la fois:
 
Sub Macro()
Dim i%, myAr() As Variant    
   ReDim myAr(1 To 4)
   For i = 1 To 4
      myAr(i) = "Text Box " & i
   Next
   ActiveSheet.Shapes.Range(myAr).Select
End Sub
 
Je suis confronté à une difficulté que je ne comprends pas.J'ai collé sur excel une impression écran.Si je crée des zones de texte en dehors de ce collage et que je déplace ces zones sur ce collage, la macro une fois exécutée, fonctionne parfaitement.Par contre, si je dessine des zones de texte directement sur le collage,quand je lance la macro, j'ai le message suivant: Erreur d'exécution 1004:'L'élément portant ce nom est introuvable'.
Merci d'avance pour vos explications.


Message édité par TAM136 le 20-02-2008 à 20:04:21
Reply

Marsh Posté le 19-02-2008 à 08:23:53   

Reply

Marsh Posté le 19-02-2008 à 13:17:34    

Re,
 
Apparemment, l'instruction suivante est inutile dans le code:
Dim i%, myAr() As Variant

Reply

Marsh Posté le 19-02-2008 à 16:01:00    

Bonjour, comment va?
je suppose que ta ligne myAr(i) = "Text Box " & i  
est écrite dans ton code comme ceci:       myAr(i) = "TextBox" & i  
   
Comment as-tu incorporé l'image?
J'ai fait l'essai avec un coller d'un print screen, et je n'ai pas de pb
Cordialement

Message cité 1 fois
Message édité par seniorpapou le 19-02-2008 à 16:01:42
Reply

Marsh Posté le 19-02-2008 à 17:00:13    

seniorpapou a écrit :

Bonjour, comment va?
je suppose que ta ligne myAr(i) = "Text Box " & i  
est écrite dans ton code comme ceci:       myAr(i) = "TextBox" & i  
   
Comment as-tu incorporé l'image?
J'ai fait l'essai avec un coller d'un print screen, et je n'ai pas de pb
Cordialement


 
Salut Senior
 
Ça faisait un sacré moment.Ça roule pour moi.Tu vas bien?
 
J'appuie sur la touche Impr écran et je colle sur excel.
Ensuite, comme je le disais, si je dessine mes zones de texte sur ce que je viens de coller et que je lance la macro, elle me retourne le message d'erreur cité plus haut.Par contre, si je dessine mes zonnes de texte en dehors et que je les déplace sur mon collage, la macro fonctionne tout à fait correctement.L'instruction dont tu parles s'écrit bien de la façon indiquée (je n'ai fait qu'un copier/coller).Ou alors, comme je l'ai indiqué, le code peut s'écrire:
 
Dim myAr(1 To 4)  
'La 1ère instruction étant inutile (en tout cas selon moi), j'écris Dim et non Redim
'Dans tous les cas, en conservant la macro telle qu'elle figure sur le site, je vois ce fameux message d'erreur
   For i = 1 To 4  
      myAr(i) = "Text Box " & i  
   Next  

Reply

Marsh Posté le 19-02-2008 à 17:12:06    

re, as-tu essayé avec   "TextBox" & i
??

Reply

Marsh Posté le 19-02-2008 à 19:41:30    

seniorpapou a écrit :

re, as-tu essayé avec   "TextBox" & i
??


 
Je vais essayer demain et je te répondrai alors.

Reply

Marsh Posté le 20-02-2008 à 07:47:03    

Bonjour,
 
Comme convenu, j'ai essayé.Je vais essayer d'être clair.
1/J'ai essayé avec "TextBox" & i  c'est-à-dire sans espace entre TextBox et les guillemets.J'ai mon message d'erreur quelque soit le cas de figure.
 
2/J'ai essayé à nouveau avec "TextBox " & i et je rencontre toujours mon problème.
 
Par contre, je dois signaler que dans les 2 cas ("TextBox" & i ou "TextBox " & i ), la ligne ActiveSheet.Shapes.Range(myAr).Select est surlignée en jaune.

Reply

Marsh Posté le 20-02-2008 à 08:43:52    

Bonjour, je n'ai pas de pb sur mon ordinateur, peux-tu poster le xls?
@+

Reply

Marsh Posté le 20-02-2008 à 19:21:09    

seniorpapou a écrit :

Bonjour, je n'ai pas de pb sur mon ordinateur, peux-tu poster le xls?
@+


 
Petite précision: je rencontre le même problème chez moi et au taf avec le pack office 2003.

Reply

Marsh Posté le 20-02-2008 à 20:03:50    

Bonsoir
 
Merci à toi Senior pour ta réponse.Visiblement, tu es plus rigoureux que moi.Effectivement, si j'efface mes TextBox et que j'en dessine de nouveaux, mes TextBox sont numérotés alors de 7 à 10
 
 
Sub Macro()
Dim i%, myAr() As Variant
     
   ReDim myAr(1 To 4)
   For i = 1 To 4
         myAr(i) = "Text Box " & i + 6
   Next
   ActiveSheet.Shapes.Range(myAr).Select
End Sub
 
ou alors
 
Sub Macro3()
Dim i%, myAr() As Variant
     
   ReDim myAr(7 To 10)
   For i = 7 To 10
      myAr(i) = "Text Box " & i
   Next
   ActiveSheet.Shapes.Range(myAr).Select
End Sub

Reply

Marsh Posté le 20-02-2008 à 20:03:50   

Reply

Marsh Posté le 21-02-2008 à 07:43:20    

Bonjour,
 
Pour connaître les noms, tu peux utiliser:
 
....shapes.count
....shapes(i).type
....shapes(i).name
sachant que  type = 13 pour une image et 17 pour un textbox
 

Reply

Marsh Posté le 25-02-2008 à 10:38:18    

seniorpapou a écrit :

Bonjour,
 
Pour connaître les noms, tu peux utiliser:
 
....shapes.count
....shapes(i).type
....shapes(i).name
sachant que  type = 13 pour une image et 17 pour un textbox
 


 
J'ai pas compris :D  
Je voudrais savoir s'il te plait, s'il est possible de sélectionner toutes les zones de texte sans en connaître le nombre (zones que j'ai créé il y assez longtemps) ni les n°(j'ai rajouté des zones à divers endroits).
Merci

Reply

Marsh Posté le 25-02-2008 à 15:43:57    

Bonsoir,  
Dim shp As Shape
   For Each shp In ActiveSheet.Shapes
   If shp.Type = msoTextBox Then
   ' ici tu fais ce que tu veux ,par exemple mettre leshp.name dans myar()
   MsgBox shp.Name
   End If
   Next

Reply

Marsh Posté le 25-02-2008 à 16:42:37    

seniorpapou a écrit :

Bonsoir,  
Dim shp As Shape
   For Each shp In ActiveSheet.Shapes
   If shp.Type = msoTextBox Then
   ' ici tu fais ce que tu veux ,par exemple mettre leshp.name dans myar()
   MsgBox shp.Name
   End If
   Next


 
Bonsoir,
 
Merci pour ton code.Impeccable comme d'habitude!

Reply

Sujets relatifs:

Leave a Replay

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