begin process at 2012 02 16 10:10:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Erreur lors de l'appel d'une procedure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur lors de l'appel d'une procedure

samedi 19 juillet 2008 à 16:17:52 | Erreur lors de l'appel d'une procedure

rimbaut

Bonjour à tous,
Je lutte désespérément pour savoir pourquoi j'ai une erreur lors de
l'appel de la procédure "FormateLigneTotal".
Voilà, j'ai écrit une procédure qui copie les valeurs d'une feuille vers une autre feuille selon la racine d'un nombre.
Voici cette procédure (en partie):

Sub ConstruitB600()
    Worksheets("B600").Activate
    Dim x As Integer ' declaration de variables
    Dim y As Integer ' ligne dans feuille "Balance
    Dim y_debut_salaires, y_fin_salaires As Integer ' Ligne dans feuille "B600"
    Dim y_debut_charges, y_fin_charges As Integer ' Ligne dans feuille "B600"
    Dim y2 As Integer ' Ligne dans feuille "B600"
    Dim y3 As Integer ' ligne pour date dans Feuille "B600"
    Dim Date_exercice1 As Date
    Dim Date_exercice2 As Date
    Dim Variat As String
    Dim En_pourcentage As String
    Dim total_annee_1, total_annee_2 As Long
    Dim total_charges_1, total_charges_2 As Long
    Dim taux_moyen_charges_1, taux_moyen_charges_2 As Double

    total_charges_1 = 0 ' Initialisation des variables
    total_charges_2 = 0
    
    total_annee_1 = 0
    total_annee_2 = 0
    
    Date_exercice1 = Sheets("Accueil").Cells(32, 5).Value
    Date_exercice2 = Sheets("Accueil").Cells(36, 5).Value
    
    Variat = ""
    En_pourcentage = ""
    
    '---------------------------------------
    ' L'entête du tableau
    
    y2 = 8
    
    ' Ici on met en place les dates des exercices ainsi que leur format
    Sheets("B600").Cells(y2, 3).Value = Date_exercice1 'Affectation de la date d'exercice
    Sheets("B600").Cells(y2, 4).Value = Date_exercice2
    Sheets("B600").Range("C" & y2 & ":D" & y2).Select ' travail sur le format
    With Selection.Interior
       .Color = RGB(255, 255, 153)
    End With
    With Selection.Font
       .Bold = True
       .Size = 12
    End With
    With Selection
       .HorizontalAlignment = xlCenter
    End With
    With Selection.Borders
       .LineStyle = xlContinuous
    End With
    
    ' Ici on met en place les intitulés variations ainsi que en% + le format
    Sheets("B600").Cells(y2, 6).Value = "Variation" 'Affectation du nom à la cellule
    Sheets("B600").Cells(y2, 7).Value = "En %"
    Sheets("B600").Range("F" & y2 & ":G" & y2).Select ' travail sur le format
    With Selection.Interior
       .Color = RGB(255, 255, 153)
    End With
    With Selection.Font
       .Bold = True
       .Size = 12
    End With
    With Selection
       .HorizontalAlignment = xlCenter
    End With
    With Selection.Borders
       .LineStyle = xlContinuous
    End With
    
    y = 11
    y2 = y2 + 2
    
    
    '---------------------------------------
    ' Les salaires
    
    y_debut_salaires = y2
    y_fin_salaires = y_debut_salaires
    
    Do While Sheets("Balance").Cells(y, 1).Value <> "" ' la boucle s'arrete quand la cellule est vide
        If Left(Sheets("Balance").Cells(y, 1).Value, 3) = "641" Then
            Call CopieLigne("Balance", y, "B600", y_fin_salaires)
            
            total_annee_1 = total_annee_1 + Sheets("B600").Cells(y_fin_salaires, 4).Value
            total_annee_2 = total_annee_2 + Sheets("B600").Cells(y_fin_salaires, 3).Value
            
            y_fin_salaires = y_fin_salaires + 1
        End If  ' Fin de test
            
        y = y + 1 ' Compteur de la boucle, on incremente de 1
    Loop ' fin de la boucle
    
    ' Code qui trace les cases Total + somme des cellules et variation
    y_fin_salaires = y_fin_salaires + 1
        
    Sheets("B600").Cells(y_fin_salaires, 2).Value = "TOTAL SALAIRES" ' affectation de valeur à une cellule
    
    Sheets("B600").Cells(y_fin_salaires, 3).Value = total_annee_2
    Sheets("B600").Cells(y_fin_salaires, 3).NumberFormat = "# ##0.00" ' definition du format de la cellule
    
    Sheets("B600").Cells(y_fin_salaires, 4).Value = total_annee_1
    Sheets("B600").Cells(y_fin_salaires, 4).NumberFormat = "# ##0.00"
    
    Sheets("B600").Cells(y_fin_salaires, 6).Value = total_annee_2 - total_annee_1
    Sheets("B600").Cells(y_fin_salaires, 6).NumberFormat = "# ##0.00"
    
    If total_annee_1 > 0 Then ' test
        Sheets("B600").Cells(y_fin_salaires, 7).Value = (total_annee_2 - total_annee_1) / total_annee_1
    End If
    Sheets("B600").Cells(y_fin_salaires, 7).Style = "Percent"
    
    Call FormateLigneTotal("B600", y_fin_salaires)
    Call FormatGrille("B600", "A" & y_debut_salaires & ":D" & y_fin_salaires)
    Call FormatGrille("B600", "F" & y_debut_salaires & ":G" & y_fin_salaires)

    
Le problème réside lors de l'appel de la 1er procédure et je ne comprends pourquoi.

Voici la procédure FormateLigneTotal :

Sub FormateLigneTotal(feuille As String, ligne As Integer)
    Sheets("feuille").Range("B" & ligne & ":D" & ligne).Select
    With Selection.Interior             ' Motif dans les cellules Total
       .Color = RGB(255, 255, 153)
    End With
    With Selection.Font                 ' Police dans les cellules Total
       .Bold = True
       .Size = 12
    End With
    With Selection.Borders              ' Bordure dans les cellules Total
    .LineStyle = xlContinuous
    End With
    
    Sheets("feuille").Range("F" & ligne & ":G" & ligne).Select
    With Selection.Interior             ' Motif dans les cellules %
       .Color = RGB(255, 255, 153)
    End With
    With Selection.Font                 ' Police dans les cellules %
       .Bold = True
       .Size = 12
    End With
    'With Selection.Borders              ' Bordure dans les cellules %
    '.LineStyle = xlContinuous
    'End With
End Sub

L'erreur indiquée est que  " l'indice n'appartient pas à la selection "
???

Si quelqu'un peut m'indiquer l'origine de mon erreur je l'en remercie vivement car je ne suis qu'un débutant
samedi 19 juillet 2008 à 16:55:12 | Re : Erreur lors de l'appel d'une procedure

niky

Membre Club
Salut,

En regardant ton code, tu écris ceci :
Sheets("feuille")

... ça veut donc dire que tu cherches un feuille appelée "feuille". Ce que tu voulais faire, c'est peut être plutôt utiliser la variable feuille et donc écrire :
Sheets(feuille)

J'espère que ça pourra t'aider.
samedi 19 juillet 2008 à 17:17:32 | Re : Erreur lors de l'appel d'une procedure

rimbaut

Merci pour ta réponse niky. Le problème venait des guillemets qui rend le code en string. Est ce celà ?
samedi 19 juillet 2008 à 17:18:42 | Re : Erreur lors de l'appel d'une procedure

niky

Membre Club
oui, c'est ce que je voulais dire


Cette discussion est classée dans : fin, total, with, salaires, b600


Répondre à ce message

Sujets en rapport avec ce message

Affichage du total des lignes déjà imprimées en haut et en bas de page. [ par zinou ] Je n'arrive pas à imprimer le total des montants des lignes détails déjà imprimés à la fin de chaque page imprimée par Crystal Report 6.La fin de la p PB de date [ par laglobule ] Jour'Bon voila ca fait + d une semaine que je bloque sur ce pb et tjs po de reponse :(J ai une BD qui gere des contratsPour chaque contrat, j'ai plusi ecrire à fin de chaque ligne dans un fichier autre que texte [ par fredfrompoitiers ] j'ai un fichier *.dat, je voudrais ajouter un caractere comme @ en fin de ligne.comment fait-on?merci d'avance!fred Atteindre la fin d'un formulaire [ par MrEddy ] salut, Je recherche comment attendre la fin de l'execution d'un formulaire vb avant de poursuivre le code dans la procédure qui a appelé le deuxieme f attendre la fin d'un shell (MS-DOS dans mon cas) mais ... [ par PaTaTe ] je veux ke ce shell soit reduit ou invible. comment faire ?[PaTaTe] Connaître la fin d'exéc d'un exe sous DOS [ par iubito ] S@lut !En appuyant sur 1 bouton j'exécute une commande DOS. Mais l'instruction juste après Shell "macommande.exe" est exécutée immédiatement et je vou winDaube [ par VicoLaChips2 ] L'informatique qu'est ce que c'est ? L'informatique c'est comme ce que vous faites tous les jours. Qu'est ce que je vais faire aujourd'hui ?? winDaube [ par VicoLaChips2 ] L'informatique qu'est ce que c'est ? L'informatique c'est comme ce que vous faites tous les jours. Qu'est ce que je vais faire aujourd'hui ?? Selectionner la ligne d'une cellule? [ par ffak ] Bonjour, je souhaite, sous VB/access, lorsque j'appuie sur mon bouton, sélectionner la cellule "total" de mon tableau excel, ceci afin d'ajouter une l


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales