Bonjour,
Je suis en train de faire une macro pour créer des plages nommées. Le truc c'est qu'avant de créer une nouvelle plage nommée je voudrais vérifier que le nom n'existe pas déjà et si c'est le cas arrêter la Macro.
Le nom de la plage en cours de création est stocké dans la variable C as String. Je suis en train de créer une boucle for each N... (avec N as Name) mais ça ne marche pas. C'est probablement pas la bonne façon de faire.
Si quelqu'un à une idée merci d'avance. En gras dans le code.
Voici le code:
Sub creaction_nouvelle_reference()
Dim A As Long
Dim B As String
Dim C As String
Dim E As String
Dim F As String
Dim H As String
Dim I As String
Dim N As Name
A = InputBox(Title:="Bonjour, Salamalikoun, Welcome, Auch kommen, Así vienen", Prompt:="Veuillez Saisir la reférence du produit (uniquement des chiffres) Merci pour votre coopération.")
B = Right(A, 5)
C = "_605_" & B
E = "605-" & B
F = E & """"
H = Right(F, 1)
I = H & F
For Each N In ActiveWorkbook.Names
If N = C Then GoTo erreur
erreur:
MsgBox "le nom existe déjà veuiller recommercer"
Exit Sub
Else
Next N
End If
ActiveWorkbook.Names.Add Name:=C, RefersToR1C1:= _
"=OFFSET('Prod Vitro ASM'!R1C2,MATCH(" & I & ",'Prod Vitro ASM'!R1C2:R9998C2,0)" _
& "-1,0,COUNTIF('Prod Vitro ASM'!R1C2:R9998C2," & I & "),1)"
Range(C).Offset(0, 34).FormulaR1C1 = "=SUM(OFFSET(" & C & ",0,33,COUNTA(" & C & "),1))"
Range(C).Offset(0, 36).FormulaR1C1 = "=AVERAGE(OFFSET(" & C & ",0,25,COUNTA(" & C & "),1))"
Range(C).Offset(0, 37).FormulaR1C1 = "=SUM(OFFSET(" & C & ",0,27,COUNTA(" & C & "),1))/SUM(OFFSET(" & C & ",0,24,COUNTA(" & C & "),1))"
Range(C).Offset(0, 38).FormulaR1C1 = "=AVERAGE(OFFSET(" & C & ",0,27,COUNTA(" & C & "),1))"
End Sub
Je suis en train de faire une macro pour créer des plages nommées. Le truc c'est qu'avant de créer une nouvelle plage nommée je voudrais vérifier que le nom n'existe pas déjà et si c'est le cas arrêter la Macro.
Le nom de la plage en cours de création est stocké dans la variable C as String. Je suis en train de créer une boucle for each N... (avec N as Name) mais ça ne marche pas. C'est probablement pas la bonne façon de faire.
Si quelqu'un à une idée merci d'avance. En gras dans le code.
Voici le code:
Sub creaction_nouvelle_reference()
Dim A As Long
Dim B As String
Dim C As String
Dim E As String
Dim F As String
Dim H As String
Dim I As String
Dim N As Name
A = InputBox(Title:="Bonjour, Salamalikoun, Welcome, Auch kommen, Así vienen", Prompt:="Veuillez Saisir la reférence du produit (uniquement des chiffres) Merci pour votre coopération.")
B = Right(A, 5)
C = "_605_" & B
E = "605-" & B
F = E & """"
H = Right(F, 1)
I = H & F
For Each N In ActiveWorkbook.Names
If N = C Then GoTo erreur
erreur:
MsgBox "le nom existe déjà veuiller recommercer"
Exit Sub
Else
Next N
End If
ActiveWorkbook.Names.Add Name:=C, RefersToR1C1:= _
"=OFFSET('Prod Vitro ASM'!R1C2,MATCH(" & I & ",'Prod Vitro ASM'!R1C2:R9998C2,0)" _
& "-1,0,COUNTIF('Prod Vitro ASM'!R1C2:R9998C2," & I & "),1)"
Range(C).Offset(0, 34).FormulaR1C1 = "=SUM(OFFSET(" & C & ",0,33,COUNTA(" & C & "),1))"
Range(C).Offset(0, 36).FormulaR1C1 = "=AVERAGE(OFFSET(" & C & ",0,25,COUNTA(" & C & "),1))"
Range(C).Offset(0, 37).FormulaR1C1 = "=SUM(OFFSET(" & C & ",0,27,COUNTA(" & C & "),1))/SUM(OFFSET(" & C & ",0,24,COUNTA(" & C & "),1))"
Range(C).Offset(0, 38).FormulaR1C1 = "=AVERAGE(OFFSET(" & C & ",0,27,COUNTA(" & C & "),1))"
End Sub