IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB.NET utilisant Excel : Le serveur RPC n'est pas disponible


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut VB.NET utilisant Excel : Le serveur RPC n'est pas disponible
    Bonjour à tous,
    Je rencontre un bugge dans mon programme, qui selon moi n'a aucun rapport avec mes instructions. Le code est le suivant :

    feuilexcel1 représent un classeur Excel d'étalonnage pour un produit étalon.
    feuilexcel2 est la base de données de ces étalons, dont la colonne B contient le nom des étalons (ce même nom est utilisé pour nommer les classeurs d'étalonnage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i=5 to 316
    If feuilexcel2.Worksheets("feuil1").range("B" & i).Value <> "" then 'sert à ignorer les cellules vides
    feuilexcel1 = GetObject ("C:\Etalons\" & feuilexcel2.Worksheets("feuil1").range("B" & i).Value
    feuilexcel2.Worksheets("feuil1").range("F" & i).Value = feuilexcel1.Worksheets("feuil1").range("A12").Value  
    End if
    Next
    A la ligne : If feuilexcel2.Worksheets("feuil1").range("B" & i).Value <> "", j'ai le message d'erreur suivant : Le serveur RPC n'est pa disponible !!
    Je ne vois pas le rapport entre mes instructions et le message d'erreur. Quelqu'un a-t-il une idée, merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Arrives-tu à reproduire l'erreur systématiquement ?

    A quel pas de boucle l'erreur survient-elle ? i=5 ? i=6 ?...

    Essaie d'exécuter la boucle sans code. Ensuite essaie d'ajouter petit à petit des instructions pour voir à quel moment exactement ça bloque.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Merci de la suggestion,
    Hélas pour moi, le programme ne fonctionne même pas lorsque i=5, dons l'erreur doit provenir de la syntaxe plus que du fichier Excel.

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Montre-nous plus de code, le problème se trouve peut-être ailleurs.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut
    Merci de me répondre,
    Voici la totalité du code de ce formulaire sachant que si j'execute le programme en enlevant la boucle For Next, tout fonctionne. Je ne pense donc pas que le reste du code soit impliqué dans ce disfonctionnement.
    Le plus curieux est qu'il ne se produit pas systématiquement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     Private Sub F99_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
     
            feuilexcel2 = GetObject("c:\Etalaq\commun\base de donnée etalons.xls")
     
            'Transfert des données du PV Etalonnage de l'étalon vers la base de données étalon
            'Etalons de travail
            For i = 5 To 263
                If (i >= 5 And i <= 104) Or (i >= 108 And i <= 157) Or (i >= 161 And i <= 210) Or (i >= 214 And i <= 263) Then 'pression
                    If feuilexcel2.Worksheets("feuil1").range("B" & i).Value <> "" Then 'ne prend pas en compte les lignes vides
    feuilexcel1 = GetObject("C:\Etalaq\Etalons\" & feuilexcel2.Worksheets("feuil1").range("B" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("C" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("D" & i).Value & ".xls")
    feuilexcel2.Worksheets("feuil1").range("F" & i).Value = feuilexcel1.Worksheets("releve des points").range("E24").Value
    feuilexcel2.Worksheets("feuil1").range("H" & i).Value = feuilexcel1.Worksheets("releve des points").range("B150").Value
    feuilexcel2.Worksheets("feuil1").range("I" & i).Value = feuilexcel1.Worksheets("releve des points").range("C150").Value
    feuilexcel2.Worksheets("feuil1").range("E" & i).Value = feuilexcel1.Worksheets("releve des points").range("E22").Value
    feuilexcel2.Worksheets("feuil1").range("L" & i).Value = feuilexcel1.Worksheets("releve des points").range("E123").Value
    feuilexcel2.Worksheets("feuil1").range("M" & i).Value = feuilexcel1.Worksheets("releve des points").range("G123").Value
    feuilexcel2.Worksheets("feuil1").range("K" & i).Value = feuilexcel1.Worksheets("releve des points").range("H113").Value
                    End If
                End If
            Next
            'Etalons de référence
            For i = 267 To 316
                If feuilexcel2.Worksheets("feuil1").range("B" & i).Value <> "" Then
    feuilexcel1 = GetObject("c:\Etalaq\Etalons\" & feuilexcel2.Worksheets("feuil1").range("B" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("C" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("D" & i).Value & ".xls")
    feuilexcel2.Worksheets("feuil1").range("F" & i).Value = feuilexcel1.Worksheets("releve des points").range("C3").Value
    feuilexcel2.Worksheets("feuil1").range("H" & i).Value = feuilexcel1.Worksheets("releve des points").range("A32").Value
    feuilexcel2.Worksheets("feuil1").range("I" & i).Value = feuilexcel1.Worksheets("releve des points").range("B32").Value
    feuilexcel2.Worksheets("feuil1").range("E" & i).Value = feuilexcel1.Worksheets("releve des points").range("F3").Value
    feuilexcel2.Worksheets("feuil1").range("L" & i).Value = feuilexcel1.Worksheets("releve des points").range("B30").Value
    feuilexcel2.Worksheets("feuil1").range("M" & i).Value = feuilexcel1.Worksheets("releve des points").range("D30").Value
    feuilexcel2.Worksheets("feuil1").range("K" & i).Value = feuilexcel1.Worksheets("releve des points").range("H30").Value
                End If
            Next
     
    'recherche d'éventuels retards d'étalonnage
            For i = 5 To 316
                If CStr(feuilexcel2.Worksheets("feuil1").range("J" & i).Value) <> "" Then
                    If feuilexcel2.Worksheets("feuil1").range("J" & i).Value <= Today Then
                        MsgBox("La date du prochain étalonnage de l'étalon " & feuilexcel2.Worksheets("feuil1").range("B" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("C" & i).Value & " " & feuilexcel2.Worksheets("feuil1").range("D" & i).Value & " est dépassée", MsgBoxStyle.Exclamation, "Etalonnage")
                        Show()
                    End If
                End If
            Next
     
            'recherche de doublons de n° de certificat
            For i = 5 To 316
                If CStr(feuilexcel2.Worksheets("feuil1").range("F" & i).Value) <> "" Then
                    mmx(i) = CStr(feuilexcel2.Worksheets("feuil1").range("F" & i).Value)
                End If
            Next
            Incert = False
            For ft = 1 To 315
                For fp = ft + 1 To 316
                    If mmx(ft) = mmx(fp) Then
                        Incert = True
                    End If
                Next
            Next
            If Incert = True Then
                MsgBox(" Attention, il existe deux numéros de certificat identiques ! ", MsgBoxStyle.Critical, "ALERTE")
                Show()
            End If
     
            'sauvegarde de la base de données étalons
            feuilexcel2.Application.DisplayAlerts = False 'blocage des alertes windows
            feuilexcel2.Parent.Windows(feuilexcel2.Name).Visible = True 'enlève le masquage des classeurs Excel
            feuilexcel2.SaveAs("c:\Etalaq\commun\base de donnée etalons.xls")
            feuilexcel2.Close()
     
            aide.Visible = True
            visualiser.Visible = True
            fin.Visible = True
            Label2.Visible = True
    end sub

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Est-ce que tu as excel ouvert en même temps que tu exécutes ton programme ?

    Vérifie dans ton gestionnaire de tâches le nombre de processus EXCEL démarrés régulièrement. Il arrive souvent que le processus EXCEL ne se ferme pas correctement, encore plus quand on fait du débugage. Il ne faut pas en avoir plus que le nombre d'automation et de classeurs ouverts.

    Enfin, ce GetObject() pour ouvrir les fichiers me chiffonne. Il est possible de l'utiliser, mais je préfère utiliser la méthode Open() de l'objet application Excel qui est faite pour ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. le serveur RPC n'est pas disponible
    Par LeBabouin dans le forum Administration
    Réponses: 3
    Dernier message: 22/07/2015, 19h43
  2. Réponses: 0
    Dernier message: 29/06/2015, 22h57
  3. le service rpc n'est pas disponible
    Par fey dans le forum Windows XP
    Réponses: 0
    Dernier message: 22/03/2010, 10h54
  4. erreur: le serveur RPC n'est pas disponible (wmi)
    Par mbounou dans le forum Windows
    Réponses: 2
    Dernier message: 03/09/2007, 00h21
  5. erreur 1722 le serveur RPC n'est pas disponible
    Par StyleXP dans le forum Windows XP
    Réponses: 1
    Dernier message: 13/11/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo