XL 2019 Je rencontre une erreur 9 : "L'indice n'appartient pas à la sélection"

chris4785478547

XLDnaute Junior
Bonsoir et JOYEUX NOEL !

Je rencontre une erreur 9 : "L'indice n'appartient pas à la sélection" sur la ligne suivante, auriez vous une idée ?

VB:
NbreDeLignesDansLaVersion = Workbooks("essai.xlsm").Sheets("SAISIE_COMPTES").Range("Q2").Value

Je vous joins mes procédures:
VB:
Option Explicit
Public DateEnCours As Date
Public DateDebut As Date
Public DateFin As Date
Public DateDebutBanque As Date
Public DateFinBanque As Date
Public SelectionDates As String

Public DateLue  As Date
Public erreur As Boolean
Public a As Range
Public b As Range
Public LigneECSource As Long
Public LigneECCible As Long
Public NbreDeLignesAEffacer As Long
Public NbreDeLignesEffacees As Long
Public NbreDeLignesDansLaVersion As Long
Public DerniereLigneOccuppee As Long
Public rep As Long
Public LigneDebutSource As Long
Public LigneDebutCible As Long
Public Moyen As String
Public NumeroCheque As String
Public NbreDeLignesAInserer As Long




Sub ValidationDates()
    'Application.ScreenUpdating = False
' Application.ScreenUpdating = true
 
    rep = MsgBox("Votre banque vous propose l'importation de vos opérations entre le" & DateDebut & " et le " & DateFin & " Ces dates vous conviennent-elles ?", vbYesNo, SelectionDates)

    If rep = vbNo Then
        erreur = True
        While erreur
        erreur = False
           
            Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\essai.xlsm"
           
           
           ' Sheets("Feuil8").Visible = -1
           
           ' Worksheets("Feuil8").Activate
           
            'Application.Visible = True
   '         Sheets("Feuil8").Activate
    '        ActiveWindow.WindowState = xlMaximized
     '       Application.WindowState = xlNormal
           
            ' DateDebut = InputBox("Choisissez votre date de DEBUT importation au format jj/mm/aa entre le " & DateDebutBanque & " et le " & DateFinBanque)
     '      Range("C1") = "Choisissez votre date de DEBUT importation entre le " & DateDebutBanque & " et le " & DateFinBanque
      '      DateDebut = Workbooks("essai.xlsm").Worksheets("Datedebut").Range("B2")
       '     If Int(CDate(DateDebut)) < Int(CDate(DateDebutBanque)) Or Int(CDate(DateDebut)) > Int(CDate(DateFinBanque)) Then
        '        erreur = True
         '   End If
'       Wend
       
  '      erreur = True
  '      While erreur
   '         erreur = False
    '        Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\essai.xlsm"
   
         
           
           ' Worksheets("Feuil9").Activate
           
           ' DateFin = InputBox("Choisissez votre date de FIN importation au format jj/mm/aa entre le " & DateDebut & " et le " & DateFinBanque)
           'Range("C1") = "Choisissez votre date de FIN importation entre le " & DateDebut & " et le " & DateFinBanque
           'DateFin = Workbooks("essai.xlsm").Worksheets("DateFin").Range("B2")
           
       
           
           
           
  '               If Int(CDate(DateFin)) < Int(CDate(DateDebutBanque)) Or Int(CDate(DateFin)) > Int(CDate(DateFinBanque)) Or Int(CDate(DateFin)) < Int(CDate(DateDebut)) Then
   '             erreur = True
    '        End If
       Wend
   
   End If
       
 
    If rep = vbYes Then
   
        Exit Sub
        ' en développement
    End If
 
   
 
 
 
End Sub





'Sub ComptageNbreDeLignesAInserer()

   
'   Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"

  '  Dim DateLueSource As String, LigneEnCours%
 
   ' For LigneEnCours = 3 To 200
'        DateLueSource = Range("A" & LigneEnCours).Value
       
'      If DateLueSource >= DateDebut And DateLueSource <= DateFin Then
  '         NbreDeLignesAInserer = NbreDeLignesAInserer + 1
   '      End If
    '  Next LigneEnCours


' End Sub



'Sub Test_ComptageLignes()
'   ComptageLignes #12/12/2020#
'End Sub



'Private Sub ComptageLignes(vDate As Date)

'   Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
   
  '  MsgBox Application.CountIf(Range("A:A"), vDate)

'End Sub










Sub SupprimerUneLigne()
   ' Dim Fichier As Workbooks
    'Dim Onglet As Worksheets
  '  Fichier = Workbooks("essai.xlsm")
   ' Onglet = Worksheets("SAISIE_COMPTES")
   
    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("I6") = Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("I6") - Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("B7") + Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("C7")
  '  Range("A7:H7").ClearContents
    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H7").ClearContents
   
    'Call classer_lignes
'    Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
   '  Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H1007").Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
     Call classer_lignes
   
   

End Sub

   








Sub Prélevement_auto()



    'Call classer_lignes
   
    Sheets("SAISIE_COMPTES").Select
    Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo

   
    DerniereLigneOccupee = Range("O1007")
    NbreDeLignesAEffacer = Range("P2") - (Range("Q2") - DerniereLigneOccupee)
    If (NbreDeLignesAEffacer > 0) Then
        For i = 7 To 7 + NbreDeLignesAEffacer - 1
        SupprimerUneLigne
        Next i
       
    End If
   
   
    Worksheets("PRELEVEMENTS AUTO").Select
    Range("A1:E" & Range("F25")).Copy
 
    Worksheets("SAISIE_COMPTES").Select
    Range("A7").End(xlDown).Offset(1, 0).Select
   
    Set Dest = Selection
   
    Dest.PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
    Range("A7").Select
   

   
End Sub

Sub classer_lignes()

    Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\essai.xlsm"
'    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Select
    Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo

'With Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES")
'   .Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
'End With

'With ActiveWorkbook.Worksheets("SAISIE_COMPTES").Sort
'.SetRange Range("A7:H1007")
'.Header = xlno
'.MatchCase = False
'.Orientation = xlTopToBottom

'.Apply
'End With




  '  Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
   ' Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
'    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H1007").Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo

End Sub

   
' Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A7:H" & Range("Q3")).Sort Key1:=Range("A7"), Order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo


'End Sub




'Sub ComptageNbreDeLignesAEffacer()

'NbreDeLignesDansLaVersion = Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("Q2").Value
'DerniereLigneOccuppee = Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("O1007").Value
'NbreDeLignesAEffacer = NbreDeLignesAInserer - (NbreDeLignesDansLaVersion - DerniereLigneOccuppee)

'End Sub

Sub ImporterCompteBancaire()

    Application.ScreenUpdating = False
   

    Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
    'ActiveWorkbook.SaveAs Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
   
   
    DateDebutBanque = Workbooks("Banque.xlsx").Worksheets("Banque").Range("B1").Value
    DateFinBanque = Workbooks("Banque.xlsx").Worksheets("Banque").Range("C1").Value
    SelectionDates = "Sélection_dates"
   
    DateDebut = DateDebutBanque
    DateFin = DateFinBanque
 
 
   
   
    Call ValidationDates
   
'   Call ComptageNbreDeLignesAInserer
    Dim DateLueSource As Date, LigneEnCours%
    Dim nbLignes As Long
    Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
    Range("A1").Select
    nbLignes = Range("A1", Selection.End(xlDown)).Cells.Count
     
   
    NbreDeLignesAInserer = 0
    For LigneEnCours = 3 To nbLignes
         DateLueSource = Range("A" & LigneEnCours).Value
       
       If (DateLueSource >= DateDebut And DateLueSource <= DateFin) Then
             NbreDeLignesAInserer = NbreDeLignesAInserer + 1
          End If
        Next LigneEnCours



   
   
    'Call ComptageNbreDeLignesAEffacer
Workbooks.Open Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
NbreDeLignesDansLaVersion = Workbooks("essai.xlsm").Sheets("SAISIE_COMPTES").Range("Q2").Value
DerniereLigneOccuppee = Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("O1007").Value
NbreDeLignesAEffacer = NbreDeLignesAInserer - (NbreDeLignesDansLaVersion - DerniereLigneOccuppee)
   
   
   
'    Call EffacerLignes

'Sub EffacerLignes()
   
    Dim NbreDeLignesEffacees As Long
    NbreDeLignesEffacees = 0
    If NbreDeLignesAEffacer >= 0 Then
        While NbreDeLignesEffacees <> NbreDeLignesAEffacer
            Call SupprimerUneLigne
            NbreDeLignesEffacees = NbreDeLignesEffacees + 1
        Wend
    End If

'End Sub

    LigneECCible = Workbooks("essai.xlsm").Sheets("SAISIE_COMPTES").Range("O1007").Value + 1
    LigneECSource = 3
  '  Call ImporterLignes
    Dim Libelle As String
        DateLue = Workbooks("Banque.xlsx").Worksheets("Banque").Range("A" & LigneECSource).Value
      '  While (Int(CDate(DateFin)) >= Int(CDate(DateLue)) >= Int(CDate(DateDebut)))
       
        While (DateFin >= DateLue And DateLue >= DateDebut And LigneECSource <= nbLignes)
        With Workbooks("banque.xlsx").Worksheets("banque")
            Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("A" & LigneECCible) = .Range("A" & LigneECSource) 'Importation date
            Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("F" & LigneECCible) = .Range("B" & LigneECSource) 'Importation libellés
        '    With Workbooks("banque.xlsx").Worksheets("banque")
                Libelle = .Range("B" & LigneECSource)
               
                Workbooks("essai.xlsm").Worksheets("IMPORTATION").Range("A36") = Libelle
                Libelle = Workbooks("essai.xlsm").Worksheets("IMPORTATION").Range("A37") ' Récupération libellé raccourci
               
                Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("F" & LigneECCible) = Libelle
               
                If InStr(1, Libelle, "CARTE") = 1 Then
                    Moyen = "CB"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
               
                 If InStr(1, Libelle, "VIR RECU") = 1 Then
                    Moyen = "VIREMENT"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
                 If InStr(1, Libelle, "PRELEVEMENT") = 1 Then
                    Moyen = "PREL.AUTO"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
                 If InStr(1, Libelle, "VIR PERM") = 1 Then
                    Moyen = "VIREMENT"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
               
                If InStr(1, Libelle, "000001 VIR PERM") = 1 Then
                    Moyen = "VIREMENT"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
               
               
                 If InStr(1, Libelle, "VRST") = 1 Then
                    Moyen = "VERSEMENT"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                End If
                 If InStr(1, Libelle, "CHEQUE") = 1 Then
                    Moyen = "CHEQUE"
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("D" & LigneECCible).Value = Moyen
                   
                    Workbooks("essai.xlsm").Worksheets("IMPORTATION").Range("A38") = Libelle
                    NumeroCheque = Workbooks("essai.xlsm").Worksheets("IMPORTATION").Range("A39") ' Récupération NumeroCheque
               
                    Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("G" & LigneECCible).Value = NumeroCheque
                       
                   
                End If
               
             '  If Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value >= 0 Then
             If .Range("C" & LigneECSource).Value >= 0 Then
                 '   Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("C" & LigneECCible).Value = Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value 'Importation recette
                 Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("C" & LigneECCible).Value = .Range("C" & LigneECSource).Value 'Importation recette
                Else
                 '   Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("B" & LigneECCible).Value = -Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value ' Importation dépense
                Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("B" & LigneECCible).Value = -.Range("C" & LigneECSource).Value  ' Importation dépense
                End If
            End With
            LigneECSource = LigneECSource + 1
            LigneECCible = LigneECCible + 1
            DateLue = Workbooks("Banque.xlsx").Worksheets("Banque").Range("A" & LigneECSource).Value
       
       
       
        Wend
        Application.ScreenUpdating = True
    End Sub
   
   
   
    'Workbooks.Close Filename:="C:\Users\Utilisateur\Desktop\Banque.csv"
    'Workbooks.Close Filename:="C:\Users\Utilisateur\Desktop\Banque.xlsx"
 



'Sub ImporterLignes()
       
'        DateLue = Workbooks("Banque.xlsx").Worksheets("Banque").Range("A" & LigneECSource).Value
'       While (Int(CDate(DateFin)) >= Int(CDate(DateLue)) >= Int(CDate(DateDebut)))
'       While DateFin >= DateLue >= DateDebut
       
  '           Range("A" & LigneECCible) = Range("A" & LigneECSource) 'Importation date
       
   '          Range("F" & LigneECCible) = Range("B" & LigneECSource) 'Importation libellés
       
    '         If Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value >= 0 Then
     '        Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("C" & LigneECCible).Value = Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value
      '       Else
       '      Workbooks("essai.xlsm").Worksheets("SAISIE_COMPTES").Range("B" & LigneECCible).Value = -Workbooks("Banque.xlsx").Worksheets("Banque").Range("C" & LigneECSource).Value
        '     End If
       
'            LigneECSource = LigneECSource + 1
  '           LigneECCible = LigneECCible + 1
   '          DateLue = Workbooks("Banque.xlsx").Worksheets("Banque").Range("A" & LigneECSource).Value
    '    Wend
 
'End Sub

Oui, je sais, pour l'instant mon code est pourri et difficilement lisible, dès que j'aurai trouvé comment rendre mes variables REELLEMENT Globales, je restrucurerai avec procédures.
Merci par avance.

NB: Si je code comme suit j'ai la même erreur sur la toute première ligne.
Et Sheets ou worksheets ne change rien contrairement à ce que je croyais avoir établi précédemment

VB:
With Workbooks("essai.xlsm").Sheets("SAISIE_COMPTES")
    NbreDeLignesDansLaVersion = .Range("Q2").Value
    DerniereLigneOccuppee = .Range("O1007").Value
    NbreDeLignesAEffacer = NbreDeLignesAInserer - (NbreDeLignesDansLaVersion - DerniereLigneOccuppee)
End With
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

=>chris
Je vois dans tes procédures , le petit bout de code que je t'avais proposé dans un autre fil.
Et je vois qu'il est mis en commentaire (donc inutilisé)
Cela me bouleversifierai moins en dedans de moi, que tu le supprimes carrément plutôt que de le laisser prendre la poussière en commentaire.
;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Je rencontre une erreur 9 : "L'indice n'appartient pas à la sélection" sur la ligne suivante, auriez vous une idée ?

Soit le classeur, soit la feuille dans le classeur n'existe pas. Souvent (mais pas que) un espace ou plus à la fin du nom figurant dans le texte de l'onglet de la feuille ou à des espaces redoublés dans le texte de l'onglet.
 

chris4785478547

XLDnaute Junior
Bonsoir le fil

=>chris
Je vois dans tes procédures , le petit bout de code que je t'avais proposé dans un autre fil.
Et je vois qu'il est mis en commentaire (donc inutilisé)
Cela me bouleversifierai moins en dedans de moi, que tu le supprimes carrément plutôt que de le laisser prendre la poussière en commentaire.
;)
Bonsoir à tous, Salut Staple,

Ne t'inquietes pas, ton code n'est pas "mort", si je l'ai laissé en commentaire, c'est que j'envisage de le remettre en service. Le probleme, c'est que j'ignore encore beaucoup de choses sur VBA et que j'ai parfois des difficultés à obtenir ce que je veux d'un code...Mais ce n'est qu'une question de temps.
Joyeux Noel à toi !
Ah au fait ! Je voulais de livrer un retour:

Quand je disais l'autre jour que l'instruction WITH semblait ne pas marcher: j'ai trouvé la solution, il fallait que je rajoute un "." devant " range(Q2") (soit: .range("Q2")) par exemple pour que le with soit pris en compte
 

Statistiques des forums

Discussions
298 827
Messages
1 972 112
Membres
203 611
dernier inscrit
fatima mallal