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

boucle avec création de feuille

A

ali

Guest
Bonjour, j'ai un ptit soucis en vb. En l'occurence j'essaye de créer un petite procédure en boucle. la procédure fonctionne ainsi :

je me positionne sur une cellule 'D2' d'une feuille nommée 'injection'
tant que la cellule active est différente des feuilles du classeur
je crée une nouvelle feuille qui portera le nom de l'activecell.value
sinon msgbox la feuille existe dèja.
ensuite je me place sur la cellule en dessous de D2 de la feuille 'injection' et je boucle à nouveau.

après plusieurs tests je n'arrive toujours pas à reselctionner la cellule en dessous de la cellule initiale 'D2'.

Ci-joint le fivhier qui pourra mieux vous aider.

Merci à vous, al
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Ali, bonjour le forum,

En attendant ton fichier qui ne vient pas, je te propose cette macro :



Message édité par: Robert, à: 18/10/2005 17:05
 
A

ALI

Guest
Merci beaucoup pour ta réponse, ca marche très bien !
Par contre j'ai oublié de préciser que lorsque ça crée une feuille dans la colonne D on peut rencontrer la même valeure et dans ce cas, il faut sauter cette valeure de façon à se retrouver dans la cellule duu dessous (une sorte de offset(1,0).

Bon je refais l'essai pour joindre le fichier !

Merci encore pour ton aide
 
A

ali

Guest
Difficile d'insérer mon fichier ! [file name=test_20051018181346.zip size=9095]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051018181346.zip[/file]
 

Pièces jointes

  • test_20051018181346.zip
    8.9 KB · Affichages: 13

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Ali, Robert, le forum,

Je ne comprends pas ce que tu souhaites de plus car le code proposé par Robert correspond parfaitement à ta demande initiale : lorsqu'il rencontre une cellule dont une des feuilles porte le nom, il affiche un message et passe à la cellule suivante !

Par contre, tu aurais peut-être dû prévenir qu'il y avait des noms identiques mais pas forcément avec la même casse, ça pose effectivement des problèmes car si une feuille est nommée 'toto' et que l'on rencontre 'TOTO' dans la colonne D, la macro essaiera de la créer et tu auras un message d'erreur...

Tu peux modifier la ligne de test de la procédure de Robert :
If Sheets(x).Name = Cel.Value Then
qui deviendra
If UCase(Sheets(x).Name) = UCase(Cel.Value) Then
ce qui t'évitera les messages d'erreur...

Sinon, en ce qui concerne ta boucle initiale, pour que tu ne restes pas sur la cellule D2, il faut quand même que tu indiques, dans ta boucle, que tu changes de cellule

Do While aaa <> ''
Sheets.Add after:=Sheets('menu')
ActiveSheet.Name = aaa
Sheets('injection').Select
selection.range('A2').select
' ou encore avec Offset...
Loop

Voili voilà

Amicalement
Charly
 
A

Ali

Guest
Bonsoir Charly, la réponse de Robert me va très bien, mais en fait si tu prends mon fichier test, tu remarqueras que ça ne crée pas toutes les feuilles de la colonne D. Pourtant il passe bien à la cellule du dessous !
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Ali, Charly, bonsoir le forum,

Ali je ne comprends plus là. Je t'ai donné une réponse, puis Charly l'a modifiée pour qu'elle ne bugue plus et quand j'ouvre ton fichier il n'y a pas le code que je t'ai donné et tu dis que ça marche pas... Si tu prends ce code ci-dessous je te garantie que ça marche :


À part ça je voulais remercier Charly d'avoir pris la relève car je n'étais plus disponible. Malgré sa tête peu avenante, ça fait deux fois qu'on se croise et je sens qu'on va rire...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…