Nom ambigui détecté

RONIBO

XLDnaute Impliqué
Bonjour,

Je rencontre des erreurs dans mes macros, je vous mets une capture avec l'erreur



Pense qu'il y a plusieurs fois le mot "chemin" dans différent code, c'est peut être pour ça que sa bloque, je me trompe?

VB:
Private Sub CDevis_Click()
chemin= "C:\Akisti Bat\Devis\"
ListeFacturesDevis.Caption = "Devis"
ListeFacturesDevis.Titre = "Liste des devis"
ListeFacturesDevis.Show
Me.Hide
End Sub
Private Sub CFactures_Click()
chemin= "C:\Akisti Bat\Facture\"
ListeFacturesDevis.Caption = "Factures"
ListeFacturesDevis.Titre = "Liste des factures"
ListeFacturesDevis.Show
Me.Hide
End Sub

VB:
Private Sub TMiseAJour_Click()
Dim Ctrl As Control
Dim Ligne As Long
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Veuillez sélectionner un nom à modifier !", vbInformation, "Attention"
Exit Sub
End If
If Trim(Me.TNom) = "" Then
Me.TNom.BackColor = vbRed
MsgBox "Veuilez renseigner au moins le nom de la société !", vbInformation, "Attention"
Exit Sub
End If
Application.ScreenUpdating = False
With Sheets("Clients")
Ligne = Me.ComboBox1.ListIndex + 4
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
If Val(Ctrl.Tag) > 0 Then
   .Cells(Ligne, Val(Ctrl.Tag)) = Ctrl
If Val(Ctrl.Tag) = 3 Then
   .Cells(Ligne, Val(Ctrl.Tag)) = Ctrl & " " & CVille
Else
   .Cells(Ligne, Val(Ctrl.Tag)) = Ctrl
End If
End If
End If
Next
Trier
   .Visible = xlSheetVisible
   .Copy
   .Visible = xlSheetVeryHidden
End With
With ActiveWorkbook
Application.DisplayAlerts = False
   .SaveAs Filename:=chemin& Fichier, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
   .Close
End With
MsgBox "La modification a bien été faite !", vbInformation, "Confirmation"
Me.Hide
End Sub

VB:
Private Sub TSuppressionClient_Click()
Dim DerLigne As Long
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Veuillez sélectionner un nom à supprimer !", vbInformation, "Attention"
Exit Sub
End If
If MsgBox("Voulez-vous supprimer ce client : " & Me.ComboBox1 & " ?", vbQuestion + vbYesNo + vbDefaultButton2, _
"Opération irréversible") <> vbYes Then Exit Sub
Application.ScreenUpdating = False
With Sheets("Clients")
   .Rows(Me.ComboBox1.ListIndex + 4).ClearContents
DerLigne = .Range("A" & Rows.Count).End(xlUp).Row
Trier
   .Visible = xlSheetVisible
   .Copy
   .Visible = xlSheetVeryHidden
End With
With ActiveWorkbook
Application.DisplayAlerts = False
   .SaveAs Filename:=chemin& Fichier, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
   .Close
End With
MsgBox "Le client sélectionné à bien été supprimée !", vbInformation, "Confirmation"
Me.Hide
End Sub

VB:
Private Sub BAjouter_Click()
Dim Ctrl As Control
Dim DerLigne As Long
If Trim(Me.TNom) = "" Then
Me.TNom.BackColor = vbRed
MsgBox "Veuilez renseigner au moins le nom de la société", vbInformation, "Attention"
Exit Sub
End If
Application.ScreenUpdating = False
With Sheets("Clients")
DerLigne = .Range("A" & Rows.Count).End(xlUp).Row + 1
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
If Val(Ctrl.Tag) > 0 Then
If Val(Ctrl.Tag) = 3 Then
   .Cells(DerLigne, Val(Ctrl.Tag)) = Ctrl & " " & CVille
Else
   .Cells(DerLigne, Val(Ctrl.Tag)) = Ctrl
End If
End If
End If
Next
Trier
   .Visible = xlSheetVisible
   .Copy
   .Visible = xlSheetVeryHidden
End With
With ActiveWorkbook
Application.DisplayAlerts = False
   .SaveAs Filename:=chemin& Fichier, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
   .Close
End With
Me.TNom.BackColor = vbWhite
Me.Hide
End Sub

VB:
Private Sub Liste_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Workbooks.Open (chemin & Liste.Text)
Me.Hide
End Sub
Private Sub UserForm_Initialize()
On Error Resume Next
new_chemin (chemin)
End Sub
Function new_chemin(Chemin_a_ouvrir As String) As String
Fichier = Dir(Chemin_a_ouvrir & "\*.*")
Do While Len(Fichier) > 0
Liste.AddItem Fichier
Fichier = Dir()
Loop
End Function

Merci et à bientôt :)
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Nom ambigui détecté

Bonjour Ronibo, bonjour le forum,

Tu ne peux pas impunément déclarer plusieurs fois (PUBLIC) la variable chemin dans les modules 2 et 4 et en plus dans le composant ThisWorkbook...
 

JCGL

XLDnaute Barbatruc
Re : Nom ambigui détecté

Bonjour à tous,

Si tu déclares une variable en Public, ne le fait qu'un fois pour toutes.

A+ à tous

Edition : Je te conseille de DL MZTools pour analyser ton code... ​En plus d'un débogage par VBE
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Nom ambigui détecté

Bonjour.
Permettez moi de corriger un temps soit peu Robert:
Tu ne peux pas impunément déclarer un même nom comme variable Public dans plusieurs modules ordinaires, mais tu pourrais à la rigueur déclarer en plus ce même nom comme propriété Public de ThisWorkbook ! Si tu tient à tout compliquer !

Ce n'est que lorsqu'elle est déclarée Public dans un module ordianaire qu'elle est connue sans préfixe de tous les modules du projet VBA, même non standards, et a une implantation unique en mémoire.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Nom ambigui détecté

Je suis perdue!
Pourquoi ? Si une variable n'est pas commune à plusieurs modules pouvant ainsi se la communiquer, il n'y a pas à la déclarer Public.
On peut éventuellement réutiliser ce nom dans un module où on ne souhaite pas utiliser la variable globale du projet (c'est ce que définit le mot Public: un élément commun à tout le projet, du moins dans un module ordinaire car dans toutes les autres sortes de modules ça en définit une propriété ou une méthode) mais à condition de ne pas la déclarer Public. Mais c'est à déconseiller pour la clarté générale, mieux vaut utiliser un autre nom !
 
Dernière édition:

Discussions similaires