Erreur de compilation:While sans Wend

Résolu/Fermé
franck - 24 nov. 2010 à 11:52
 franck - 26 nov. 2010 à 10:45
Bonjour, a chaque fois que j'ouvre un fichier excel,cette erreur s'ouvre à chaque fois,voici la liste ou il me dit qu'il y a le problème mais je ne m'y connais pas assez pour réparer le problème,est ce que quelqu'un pourrais m'aider?Merci


ieser Source stammt von http://www.vb-fun.de und kann frei
'in EIGENEN (auch in EIGENEN kommerziellen) Projekten verwendet
'werden. Er darf NICHT auf anderen Webseiten oder Foren ohne
'Quellenangabe veröffentlicht werden (siehe hierzu auch die
'Hinweise unter "Urheber- und Kennzeichenrecht" im Impressum).
'Für eventuelle Schäden wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source-Code !

'========================================================================
'In diesem Modul enthalten:
'
' - Globale Konstanten
' - Globale Variablen
' - Initialisierungsprozedur für das Add-In
' - Add-In-Deinstallationsprozedur
' - Prozedur zum Speichern der Benutzereinstellungen (Registry)
' - Prozedur zum Löschen der Registry-Einträge
'========================================================================


Option Explicit
Option Private Module

'========================================================================
' Globale Konstanten
'========================================================================

Public gcAPP_NAME As String 'Name des AddIns
Public gcCBAR_NAME As String 'Name der Symbolleiste
Public gcCTBarEntry As String 'Name des Eintrags auf der Symbolleiste

'Registry (HKEY_CURRENT_USER\Software\VB and VBA Program Settings\)
Public gcREG_APP As String
Public gcREG_TOOLBAR As String

'========================================================================
' Globale Variablen
'========================================================================


'========================================================================
' Initialisierungs- und Terminierungsprozedur
'========================================================================

Public Sub AddIn_Initialize()
'Initialisierungsprozedur
Dim settings As Object

gcAPP_NAME = "ExcelImporter"
gcCTBarEntry = "Import measured data from device"
gcREG_APP = "ExcelImporter"


Dim settingsPath As String
Dim langId As String

'Applikationsabhängige Texte
settingsPath = ThisWorkbook.Path
settingsPath = settingsPath & "\Config.ini"
If settings.Init(settingsPath) Then
gcAPP_NAME = settings.GetString("App", "AppName", gcAPP_NAME)
gcREG_APP = settings.GetString("App", "AppNameShort", gcREG_APP)
End If



'Sprachabhängige Texte
settingsPath = ThisWorkbook.Path
settingsPath = settingsPath & "\Install.ini"
settings.Init settingsPath
langId = settings.GetString("InstallSettings", "Language", "1033")

settingsPath = ThisWorkbook.Path
settingsPath = settingsPath & "\Texts.dat"
If settings.Init(settingsPath) Then
Dim strLang As String
Dim strCmpLangId As String
Dim nLangIdx As Long

nLangIdx = settings.GetLong("Languages", "LangCount")
While (nLangIdx > 0)
nLangIdx = nLangIdx - 1
strLang = settings.GetString("Languages", "Lang" & nLangIdx, "")
strCmpLangId = settings.GetString("Languages", strLang, "")
If (strCmpLangId = langId) Then
gcCTBarEntry = settings.GetString(strLang, "T_ToolbarBtnText", gcCTBarEntry)
nLangIdx = 0
End If








gcCBAR_NAME = gcAPP_NAME
gcREG_TOOLBAR = "ToolBar"

'Symbolleiste erstellen
CreateCommandBar
End Sub


Public Sub AddIn_Terminate()
'Wird aufgerufen, wenn das AddIn geschlossen wird.
' Siehe Codebereich 'DieseArbeitsmappe'
' -> Private Sub Workbook_BeforeClose()

'Einstellungen in der Registry speichern
AddIn_SaveSettings
End Sub

Public Sub AddIn_Uninstall()
'Wird nur dann aufgerufen, wenn das AddIn über den AddIn-Manager
'installiert wurde und das AddIn deinstalliert wird.
' Siehe Codebereich 'DieseArbeitsmappe'
' -> Private Sub Workbook_AddinUninstall()

'Prozedur zum "Aufräumen" aufrufen
AddIn_Terminate

'Registry-Einträge komplett löschen
AddIn_DeleteRegSettings

'Symbolleiste löschen
DeleteCommandBar
End Sub


Private Sub AddIn_SaveSettings()
'Im Add-In gemachte Benutzereinstellungen in der Registry speichern

'Symbolleisten-Einstellung
Dim objCBar As Office.CommandBar
Dim lngPosition As Long
Dim blnVisible As Boolean

On Error Resume Next
Set objCBar = ThisWorkbook.Application.CommandBars(gcCBAR_NAME)
If Not objCBar Is Nothing Then
With objCBar
lngPosition = .Position 'Position speichern
blnVisible = .Visible 'Sichtbarkeit speichern

SaveSetting gcREG_APP, gcREG_TOOLBAR, "Visible", CLng(.Visible)
SaveSetting gcREG_APP, gcREG_TOOLBAR, "Position", .Position
SaveSetting gcREG_APP, gcREG_TOOLBAR, "Top", .Top
SaveSetting gcREG_APP, gcREG_TOOLBAR, "Left", .Left
SaveSetting gcREG_APP, gcREG_TOOLBAR, "RowIndex", .RowIndex

.Visible = False 'Unsichtbar machen, damit die "schwimmende" Symbolleiste
.Position = msoBarFloating 'nicht sichtbar ist, wird benötigt um die Breite zu ermitteln
SaveSetting gcREG_APP, gcREG_TOOLBAR, "Width", .Width

.Position = lngPosition 'Position wiederherstellen
.Visible = blnVisible 'Sichtbarkeit wiederherstellen
End With
Set objCBar = Nothing
End If
On Error GoTo 0
End Sub

4 réponses

Utilisateur anonyme
24 nov. 2010 à 11:58
Hello,

Perso, je mettrais le wend après le end if dans cette partie :

While (nLangIdx > 0)
nLangIdx = nLangIdx - 1
strLang = settings.GetString("Languages", "Lang" & nLangIdx, "")
strCmpLangId = settings.GetString("Languages", strLang, "")
If (strCmpLangId = langId) Then
gcCTBarEntry = settings.GetString(strLang, "T_ToolbarBtnText", gcCTBarEntry)
nLangIdx = 0
End If


Wend






gcCBAR_NAME = gcAPP_NAME
gcREG_TOOLBAR = "ToolBar"
0
merci pour l'astuce mais maintenant c'est a la ligne du dessous qui me pose problème,il me dit erreur de compilation bloc If sans End If et avec le premier End sub en surbrillance,voici la ligne et merci d'avance

gcCBAR_NAME = gcAPP_NAME
gcREG_TOOLBAR = "ToolBar"

'Symbolleiste erstellen
CreateCommandBar
End Sub

Public Sub AddIn_Terminate()
'Wird aufgerufen, wenn das AddIn geschlossen wird.
' Siehe Codebereich 'DieseArbeitsmappe'
' -> Private Sub Workbook_BeforeClose()

'Einstellungen in der Registry speichern
AddIn_SaveSettings
End Sub
0
Utilisateur anonyme
24 nov. 2010 à 17:50
settingsPath = ThisWorkbook.Path
settingsPath = settingsPath & "\Texts.dat"
If settings.Init(settingsPath) Then
Dim strLang As String
Dim strCmpLangId As String
Dim nLangIdx As Long

nLangIdx = settings.GetLong("Languages", "LangCount")
While (nLangIdx > 0)
nLangIdx = nLangIdx - 1
strLang = settings.GetString("Languages", "Lang" & nLangIdx, "")
strCmpLangId = settings.GetString("Languages", strLang, "")
If (strCmpLangId = langId) Then
gcCTBarEntry = settings.GetString(strLang, "T_ToolbarBtnText", gcCTBarEntry)
nLangIdx = 0
End If


Fectivement, comme tu peux le constater dans ce que je t'ai mis en gras italique, il y a 2 if pour un seul end if.

Donc, soit tu ajoutes un second end if après le premier (mais je ne garantis pas l'intégrité de la macro, j'ai vraiment pas le temps d'analyser ce que ça fait exactement), soit tu jettes simplement le script, vu qu'il est tout moisi :o)
0
merci pour ton aide c'est résolu avec un peu de mal mais résolu,merci
0