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 ?
Je vous joins mes procédures:
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
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: