2 Macros qui beugent

Chri8Ed

XLDnaute Occasionnel
Bonjour à tous

J’ai deux macros qui me permettre de passer de mois en mois dans mon tableau
Une en descendant
Et une en montant

De même j’ai deux macros qui me permettre de passer d’année en année
Une en descendant
Et une en montant


Les 2 macros qui vont en descendant fonctionnent parfaitement

Les 2 macros en montant bloquent
Erreur d'execution '13' : Incompatibilité de type

Pour celle des années sur :
If Year(Range("B" & n)) = suiv Then

Pour celle des mois sur :
If Month(Range("B" & n)) = suiv Then


Ne pouvant mettre le fichier
Je joins les 4 macros
Si quelqu’un peut m’aider, je le remercie d’avance



Les 4 macros :


Sub Vers_premier_jour_mois_suivant()

' Passage de mois en mois en descendant
' Touche de raccourci du clavier: Ctrl+S

Cells(ActiveCell.Row, 2).Select
If Selection.Column <> 2 Then Exit Sub
x = Month(Selection.Value)
suiv = x + 1
If suiv = 13 Then suiv = 1
For n = Selection.Row To Range("B" & Rows.Count).End(xlUp).Row
If Month(Range("B" & n)) = suiv Then
Range("B" & n).Select
Exit For
End If
Next
ActiveWindow.ScrollRow = Selection.Row
End Sub

----------------

Sub Vers_premier_jour_mois_precedent()

' Passage de mois en mois en remontant
' Touche de raccourci du clavier: Ctrl+P

Cells(ActiveCell.Row, 2).Select
If Selection.Column <> 2 Then Exit Sub
x = Month(Selection.Value)
suiv = x - 1
If suiv = 0 Then suiv = 13
For n = 4 To Range("B" & Rows.Count).End(xlUp).Row
If Month(Range("B" & n)) = suiv Then
Range("B" & n).Select
Exit For
End If
Next
ActiveWindow.ScrollRow = Selection.Row
End Sub

--------------------

Sub Vers_premier_jour_annee_suivante()

' Passage d'année en année en descendant

Cells(ActiveCell.Row, 2).Select
If Selection.Column <> 2 Then Exit Sub
x = Year(Selection.Value)
suiv = x + 1
'If suiv = 13 Then suiv = 1
For n = Selection.Row To Range("B" & Rows.Count).End(xlUp).Row
If Year(Range("B" & n)) = suiv Then
Range("B" & n).Select
Exit For
End If
Next
ActiveWindow.ScrollRow = Selection.Row
End Sub

----------------------

Sub Vers_premier_jour_annee_precedente()

' Passage d'année en année en remontant
' Touche de raccourci du clavier: Ctrl+P

Cells(ActiveCell.Row, 2).Select
If Selection.Column <> 2 Then Exit Sub
x = Year(Selection.Value)
Cells(ActiveCell.Row, 2).Select
suiv = x - 1
If suiv = 0 Then suiv = 13
For n = 4 To Range("B" & Rows.Count).End(xlUp).Row
If Year(Range("B" & n)) = suiv Then
Range("B" & n).Select
Exit For
End If
Next
ActiveWindow.ScrollRow = Selection.Row
End Sub
 

Chri8Ed

XLDnaute Occasionnel
Voici un fichier exemple

A noter que la macro pour passer de mois en mois en descendant fait des caprices dans cet exemple ??
Cependant elle fonctionne parfaitement dans mon fichier d'origine

A+
 

Pièces jointes

  • Fichier Exemple.xlsm
    162.5 KB · Affichages: 32

Chri8Ed

XLDnaute Occasionnel
Bonjour et merci beaucoup Pierrejean

C'est quasiment parfait
Je dis quasiment cela plante au 1er mois ou à la première année
Je ne vous pas pourquoi ??
D"autant plus que dans ton fichier, cela ne plan pas !

La macro plante à cette ligne :
If Month(Range("B" & m)) <> mois Then

ou pour les année
If Year(Range("B" & m)) <> an Then

-----

La 1ère date de mon tableau est 03/09/13

Quand je suis sur 03/10/13
(La date précédente à cette date est le 30/09/13)
Cela devrait donc pointer la date du 03/09/13
Mais cela plante à ce niveau


Quand je suis sur le 1er jour de l'année 2014
Cela devrait donc pointer la date du 03/09/13
Mais cela plante à ce niveau

A+
 

Chri8Ed

XLDnaute Occasionnel
Bonjour Pierrejean

J'ai fini par trouver l'erreur
Tout d'abord dans la ligne 7, juste au dessus de la 1ère date
J'ai le titre "Date" et je ne l'avais pas mis dans mon exemple
Cela à solutionné un problème

Ensuite, comme tu m'a mis sur la voie en me demandant si ma 1ère ligne était la 4
J'ai donc compris la raison de "To 4 Step -1"
j'ai donc mis "To 7 Step -1"
Car ma 1ère ligne est la 8ème ligne

Cela fonctionne parfaitement maintenant

Par contre, si je comprend bien, si je veux laisser mon titre date
Il faudrait d'abord faire un test pour savoir si la cellule est texte ?
Mais cela risque de sans doute compliquer la macro ?

Je n'ai pas encore compris pourquoi dans ta solution
tu as mis "To 4 Step -1" et que cela fonctionne
Alors que la 1ère ligne est la ligne 8 ??

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 852
dernier inscrit
dthi16088