serie de macros uniquement sur les feuilles de l' année en cours

andrekn13

XLDnaute Occasionnel
Bonjour
Comme c' est marqué dans l' intitulé : j' ai un classeur factures dont les onglets sont les 3 derniers numéro de facture. j' ai en début de classeur un onglet " synthèse" qui récapitule les données avec lien hypertexte de toutes les années.
j' aimerais créer un onglet "2014" au tout début qui reprend la même liste de macros successifs mais au tout début mettre la condition que toutes les instructions dépendes si cela correspond à l' année en cours.
J'ai soit la date en H18 soit le numéro de facture en H17 qui comporte l' année.

J' ai essayé une vingtaines de possibilités mais pas le résultat escompté du style :
for each Sheets(Year(Date)):=Select ou
'If Range("H18").Content("*2014*") Then .....
merci pour votre aide
 

bububle

XLDnaute Nouveau
Re : serie de macros uniquement sur les feuilles de l' année en cours

Bonjour andrekn13,

Tu peux soit écrire :

nb_total = Sheets.Count
For i = 1 To nb_total
If Sheets(i).Name = 2014 Then
'mettre ton code ici
End If
Next i

ou encore :
If Range("H18").Value = 2014 Then
'mettre ton code ici
End If

J'espère que ça va t'aider ...
A+
 

andrekn13

XLDnaute Occasionnel
Re : serie de macros uniquement sur les feuilles de l' année en cours

Bonjour
j' essaye , mais cela m' efface tout le tableau :
Sheets("2014").Rows("2:" & Range("A65535").End(xlUp).Row + 1).Clear

Var = Array("H17", "H18", "E42", "D13", "D13", "D13", "D13", "K33", "K34", "E45", "E11", "E13", "E14", "E15", "F15", "K29", "K35") 'Positionne dans un tableau nommé Var les adresses de cellules à traiter
For i = 6 To Sheets.Count 'Boucle sur les onglets
derligne = Sheets("2014").Range("A65535").End(xlUp).Row + 1 'Définit la derniere ligne remplie de la feuille Synthese
If Range("H18").Value = 2014 Then
If Sheets(i).Name <> "2014" And Sheets(i).Name <> "1-fact froid" Then 'Si on n'est pas sur la feuille Synthese donc si on est sur une facture ...

For j = 1 To 17 'On boucle sur le Tableau Var qui contient les adresses à traiter dans la facture
Sheets("2014").Cells(derligne, j).Value = Sheets(i).Range(Var(j - 1)).Value 'Range(Var(j - 1)) 'renvoie l'adresse de E1 puis E2 etc .. Cells(derligne, j) renvoie l'adresse de la cellule située sur la derniere ligne vide de synthese et j incremente la colonne
Next
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 1), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!K1", _
TextToDisplay:=Worksheets(i).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 2), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!H17", _
TextToDisplay:=Worksheets(i).Name
End If
End If
Next i
MERCI
 

bububle

XLDnaute Nouveau
Re : serie de macros uniquement sur les feuilles de l' année en cours

Bonjour,

Lorsque tu utilises cette fonction :
Sheets("2014").Rows("2:" & Range("A65535").End(xlUp).Row + 1).Clear
tu effaces entièrement les lignes de 2 à ta dernière ligne écrite (contenus + encadrement) ...

1) Si tu ne veux effacer que le contenu en gardant les encadrement, il te faut plutôt utiliser ClearContents
2) Si tu ne veux effacer que les 3 premières colonnes, par exemple, utilise .Range("A2:Cxx") ou xx est ta dernière ligne

je te propose donc ça :

derligne = Sheets("2014").Range("A65535").End(xlUp).Row + 1
Sheets("2014").Range("A2:C" + Trim(derligne)).ClearContents


'Positionne dans un tableau nommé Var les adresses de cellules à traiter
Var = Array("H17", "H18", "E42", "D13", "D13", "D13", "D13", "K33", "K34", "E45", "E11", "E13", "E14", "E15", "F15", "K29", "K35")

'Boucle sur les onglets
For i = 1 To Sheets.Count
'Définit la derniere ligne remplie de la feuille Synthese


If Range("H18").Value = 2014 Then
'Si on n'est pas sur la feuille Synthese donc si on est sur une facture ...
If Sheets(i).Name <> "2014" And Sheets(i).Name <> "1-fact froid" Then

'On boucle sur le Tableau Var qui contient les adresses à traiter dans la facture
For j = 1 To 17
'Range(Var(j - 1)) 'renvoie l'adresse de E1 puis E2 etc ..
'Cells(derligne, j) renvoie l'adresse de la cellule située sur la derniere ligne vide de synthese et j incremente la colonne
Sheets("2014").Cells(derligne, j).Value = Sheets(i).Range(Var(j - 1)).Value
Next

ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 1), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!K1", _
TextToDisplay:=Worksheets(i).Name
ActiveSheet.Hyperlinks.Add Anchor:=Cells(derligne, 2), Address:="", _
SubAddress:="'" & Worksheets(i).Name & "'!H17", _
TextToDisplay:=Worksheets(i).Name
End If
End If
Next i

Voilà,
A+

Nota :
Je ne peux pas te dire si le reste du code fonctionne, n'ayant pas assez de bille ...
 

andrekn13

XLDnaute Occasionnel
Re : serie de macros uniquement sur les feuilles de l' année en cours

Bonjour
Merci de m'aider
Pendant toute cette année j' ai utilisé ce code et ce n' est pas le début que je dois changer, sinon il ajouterai des doublons à chaque fois. je veux juste que mon tableau qui contient aussi des cumuls soit créer à la base uniquement avec les factures de 2014. Je dois donc que rajouter une condition pour qu'il aille chercher dans chaque feuille que celles dont la date est de cette année.
 

Discussions similaires

Statistiques des forums

Discussions
312 275
Messages
2 086 707
Membres
103 377
dernier inscrit
fredy45