XL pour MAC copie feuille avec verification du nom

nobodyuse

XLDnaute Occasionnel
Bonjour a toutes et tous
Me revoilà :eek:
comme tjr je précise je suis hyper novice

Dans mon classeur excel lors de l’exécution d'une macro je copie ma feuille et la renomme
j'ai voulu essayer d'ajouter une fonction de test du nom qui est composé de BC + le nom présent en case D4
lors de la présence d'une feuille portant le même nom ca m'ouvre une "InputBox" pour sélectionner le nouveau nom et me renomme ma feuille correctement

par contre si le nom n'est pas présent ca ne me renomme pas ma feuille sous la forme BC + (C4) mais sous forme BC(2), BC(3)....
j'ai une coquille quelque part mais après plusieurs test je ne vois pas voici la partie du code en question


VB:
    '---Nouvelle feuille---
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 ActiveSheet.Copy before:=Sheets(Sheets.Count) 'nouveau document

         '---TeST---
      On Error Resume Next
    Set f = Sheets("BC " & Range("D4"))
    If Err = 0 Then ActiveSheet.Name = "BC " & Range("D4")               ' Assignation du nom de la feuille
     '---FIN---
    FeuilleExiste = True
    nameBC = InputBox("Nommez le nouveau Bon de commande", Title:="Nommez le nouveau bon de Commande Vierge", Default:="Bon de Commande ") ' Présentation d'une zone de saisie pour demander le numéro du bon de commande à l'utilisateur
    ActiveSheet.Name = nameBC           ' Assignation du nom de la feuille en cas de doublons
    Set f = Nothing

Merci ;)
 

Roblochon

XLDnaute Barbatruc
Bonjour

Quand vous copiez une feuille, celle-ci devient la feuille active.
Range sans autre référence est par défaut, objet de la feuille active.

Avant de copier votre feuille, mettez la valeur de Range("D4") dans une variable String, elle sera pérenne tout au long de l'exécution de votre macro.

Ou référencez votre objet range("D4") de départ dans une variable de type Range ou faites y mention en incluant son parent : ThisWorkBook.Sheets("LeNomDeLaFeuille").Range("D4").

ThisWorkbook permet de se prévenir du même genre de problème de classeur Actif au moment de l'exécution de la macro.

Lorsque vous utilisez un objet excel, ici un Range, ayez toujours en tête sa provenance.

Utilisez la fenêtre variable locales pour voir l'état et contenu de vos variables

cordialement
 

nobodyuse

XLDnaute Occasionnel
Merci Roblochon
Mais je suis vraiment novice j’essaie de bidouiller avec des codes que je trouve par ci par là
J’essai d’apprendre et de comprendre au fur et à mesure ...
J’ai bien compris comment déclarer une variable
Mais là pour le coup ce que tu le dit je seche un peu, J’ai teste en déclarant une variable mais ça ne donne rien à part me renvoyer à chaque fois sur l’Inputbox (ce que je n’avais pas avant par contre)
je suis sans doute sur la bonne voie mais je seche
 

Discussions similaires

Réponses
13
Affichages
473

Membres actuellement en ligne

Statistiques des forums

Discussions
288 664
Messages
1 893 836
Membres
170 101
dernier inscrit
Lupinps
Haut Bas