Macro excel
larouche1985
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
bonjour le forum,
j'ai un programme qui demande un nom de la feuille et teste si le nom n"existe pas sinon redemande un autre nom;mais ça marche une fois sur 3 en plus ça donne une erreur que le nom existe déja !!
""Sub test()
Dim nom As String
Dim Sh As Variant
nom = InputBox("Donner le Nom de la feuil... ?", "Titre") '
Do While nom = ""
nom = InputBox("Donner un nom pour pousuivre!!")
Loop
For Each Sh In Worksheets
If Sh.Name = nom Then
MsgBox "La feuille " & nom & " existe"
MsgBox "Donner un autre nom pour pousuivre."
nom = InputBox("nom...!!!")
End If
ActiveSheet.Select
ActiveSheet.Name = nom
Next""
merci d'avance
j'ai un programme qui demande un nom de la feuille et teste si le nom n"existe pas sinon redemande un autre nom;mais ça marche une fois sur 3 en plus ça donne une erreur que le nom existe déja !!
""Sub test()
Dim nom As String
Dim Sh As Variant
nom = InputBox("Donner le Nom de la feuil... ?", "Titre") '
Do While nom = ""
nom = InputBox("Donner un nom pour pousuivre!!")
Loop
For Each Sh In Worksheets
If Sh.Name = nom Then
MsgBox "La feuille " & nom & " existe"
MsgBox "Donner un autre nom pour pousuivre."
nom = InputBox("nom...!!!")
End If
ActiveSheet.Select
ActiveSheet.Name = nom
Next""
merci d'avance
A voir également:
- Macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
3 réponses
Bonjour Larouche, bonjour le forum,
Le Next était mal placé... J'ai aussi modifié la boîte d'entrée nom pour que tu puisses en sortir, si tu changes d'avis, avec le bouton Annuler.
Le code :
Le Next était mal placé... J'ai aussi modifié la boîte d'entrée nom pour que tu puisses en sortir, si tu changes d'avis, avec le bouton Annuler.
Le code :
Sub test() Dim nom As Variant Dim Sh As Object ici: nom = Application.InputBox("Donner le Nom de l'onglet... ?", "Titre", Type:=2) If nom = "" Then GoTo ici If nom = False Then Exit Sub For Each Sh In Worksheets If Sh.Name = nom Then MsgBox "L'onglet " & nom & " existe déjà !" MsgBox "Donner un autre nom pour pousuivre." GoTo ici End If Next Sh ActiveSheet.Select ActiveSheet.Name = nom End Sub
bonjour ThauTheme,
merci beaucoup pour t'a réponse c'est parfait...
je profite pour te poser une autre question si tu permet,
j'ai une formule qui me calcul le maximum dans une colonne H et je voudrai récupérer la valeur qui est dans la meme ligne que le max, colonne I
le problème et que la position du max change en fonction des données, la position des colonne et toujours pareille (H,I)
voici le code:
(le maximum est calculé puis copier dans la cellule "O4" )
Range("O4").Select
ActiveCell.FormulaR1C1 = "=MAX(R[-2]C[-7]:R[49]C[-7])"
merci d'avance
merci beaucoup pour t'a réponse c'est parfait...
je profite pour te poser une autre question si tu permet,
j'ai une formule qui me calcul le maximum dans une colonne H et je voudrai récupérer la valeur qui est dans la meme ligne que le max, colonne I
le problème et que la position du max change en fonction des données, la position des colonne et toujours pareille (H,I)
voici le code:
(le maximum est calculé puis copier dans la cellule "O4" )
Range("O4").Select
ActiveCell.FormulaR1C1 = "=MAX(R[-2]C[-7]:R[49]C[-7])"
merci d'avance
Bonsoir Larouche, bonsoir le forum,
D'abord un conseil. Évite les Select inutiles qui ne font que ralentir l'exécution du code. Les lignes :
peuvent s'écrire :
Esuite, je te propose le code ci-dessous mais qui risque de ne pas être fiable si tu as des ex-æquo dans la valeur Max. En effet la fonction Find va renvoyer la première occurrence trouvée...
D'abord un conseil. Évite les Select inutiles qui ne font que ralentir l'exécution du code. Les lignes :
Range("O4").Select ActiveCell.FormulaR1C1 = "=MAX(R[-2]C[-7]:R[49]C[-7])"
peuvent s'écrire :
Range("O4").FormulaR1C1 = "=MAX(R[-2]C[-7]:R[49]C[-7])"
Esuite, je te propose le code ci-dessous mais qui risque de ne pas être fiable si tu as des ex-æquo dans la valeur Max. En effet la fonction Find va renvoyer la première occurrence trouvée...
Sub Macro1() Dim M As Variant Dim V As Variant Range("O4").FormulaR1C1 = "=MAX(R[-2]C[-7]:R[49]C[-7])" M = Range("O4").Value V = Range("H2:H53").Find(M, , xlValues, xlWhole).Offset(0, 1).Value MsgBox V End Sub