Re : erreur vba
bonjour a tous,
bebere non ca ne marche pas helas
je vous met le code complet au cas ou, qqn a une idee
meme en renommant ma variable ca me donne toujour la meme chose
un grand merci a vous merci
Sub CA_MAg() 'edite sur feuille CA SEMAINE les ventes des journnees
'déclaration des variables :
Dim Trouve_date As Range, Trouve_ville As Range, PlageDeRecherche As Range
Dim Trouve_date_n1 As String
Dim Date_Cherchee As Date, Date_cherchee_n1 As String, Ville_Cherchee As String
Dim ligne_date As String, ligne_date_n1 As String, ville As String
Dim nbr_boutique As String, fin_jour As String, fin_semaine As String
Dim datetest As String, Num_semaine As String, num_jour As String
Dim myDate As Date, myYear As Integer, myWeek As Byte
nbr_boutique = Application.WorksheetFunction.CountA(Sheets("BD").Rows(5))
fin_jour = nbr_boutique * 6
For i = 4 To 22 Step 3
For a = 11 To fin_jour Step 5
'********* à adapter ***********
'trouve n°semaine en cour
datetest = CDate(Sheets("CA semaine").Cells(9, i))
Num_semaine = Format(datetest, "ww", vbMonday, vbFirstFourDays)
num_jour = Weekday(Dte, vbMonday) + 1 'Format(datetest, "dddd")
'recherche de la date n-1
myYear = 2015
myWeek = Num_semaine
myDate = 7 * myWeek + DateSerial(myYear, 1, 1) - ((DateSerial(myYear, 1, 1)) Mod 7) + num_jour
'affectation de valeurs aux variables :
Date_Cherchee = CDate(Sheets("CA semaine").Cells(9, i))
Date_cherchee_n1 =CDate(myDate)
Ville_Cherchee = Sheets("CA semaine").Cells(a, 1)
'dans la première colonne de la feuille active
Set PlageDeRecherche = Sheets("BD").Range("A1:IV65000")
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve_date = PlageDeRecherche.Cells.Find(what:=Date_Cherchee, LookAt:=xlWhole)
Set Trouve_date_n1 = PlageDeRecherche.Cells.Find(what:=Date_cherchee_n1, LookIn:=xlValues, LookAt:=xlWhole)
Set Trouve_ville = PlageDeRecherche.Cells.Find(what:=Ville_Cherchee, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve_date Is Nothing Or Trouve_ville Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
If Trouve_date Is Nothing Then
MsgBox (" pas de date trouvee") & Date_Cherchee
Exit Sub
If Trouve_date Is Nothing Then
MsgBox (" pas de date N-1 trouvee") & Date_Cherchee
Exit Sub
Else
MsgBox (" pas de ville trouvee") & Ville_Cherchee
Exit Sub
End If
Else
MsgBox (" pas de ville trouvee") & Ville_Cherchee
Exit Sub
End If
Else
'ici, traitement pour le cas où la valeur est trouvée
' AdresseTrouvee = Trouve.Address
ligTrouve_date_n1ne_date = Trouve_date.Row
' ligne_date_n1 = .Row
ville = Trouve_ville.Column
End If
With Sheets("CA semaine")
.Cells(a, i) = Sheets("BD").Cells(ligne_date, ville + 0) 'CA HT
.Cells(a, i).Offset(1, 0) = Sheets("BD").Cells(ligne_date, ville + 1) 'CA HT DERIVE
.Cells(a, i).Offset(2, 0) = Sheets("BD").Cells(ligne_date, ville + 2) 'nb transaction
.Cells(a, i).Offset(3, 0) = Sheets("BD").Cells(ligne_date, ville + 3) 'nb article vendu
.Cells(a, 25) = (Cells(a, 25) + Cells(a, i))
.Cells(fin_jour + 5, i) = (Cells(fin_jour + 5, i) + Cells(a, i))
' .Cells
End With
Set PlageDeRecherche = Nothing
Set Trouve_date = Nothing
Set Trouve_date_n1 = Nothing
Set Trouve_ville = Nothing
Next a
For b = 11 To fin_jour Step 5
On Error Resume Next
With Sheets("CA semaine")
.Cells(b, i).Offset(0, 1) = Cells(b, i) / Cells(fin_jour + 5, i) '%CA HT
.Cells(b, i).Offset(1, 1) = Cells(b, i).Offset(1, 0) / Cells(b, i) '%CA HT DERIVE
.Cells(b, i).Offset(2, 1) = Cells(b, i) / Cells(b, i).Offset(2, 0) '%nb transaction
.Cells(b, i).Offset(3, 1) = Cells(b, i).Offset(3, 0) / Cells(b, i).Offset(2, 0) '%nb article vendu
'evolution Vente
.Cells(b, i).Offset(0, 2) = Cells(b, i) / Sheets("BD").Cells(ligne_date_n1, ville + 0) ' evolution CA HT
.Cells(b, i).Offset(0, 2) = Cells(b, i) / Sheets("BD").Cells(ligne_date_n1, ville + 1) ' evolution CA HT DERIVE
End With
Next b
Next i
End Sub