• Initiateur de la discussion Initiateur de la discussion Thierry
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Thierry

Guest
Je positionne ci-dessous la macro que j'utilise pour rechercher les mois dans une feuille Opération (Mvts). Le but de cette macro est de dresser une liste de tous les mois utilisés dans cette feuille, en sachant qu'il y a au moins une opération par mois, j'ai trouvé 'sage' de dresser une liste automatique du premier jour au dernier jour...
Cette liste sert ensuite de liste déroulante pour sélectionner la liste des opérations d'un mois désiré afin de les imprimer...

Le problème est le suivant :
Cette macro fonctionne la première fois seulement, le fait de nommer la plage fonctionne une fois parfaitement, et ensuite place R2C2... en zone au lieu de $B$2 ...

Ce n'est pas la première fois que j'utilise ce code, mais c'est la première fois que je n'arrive pas à le débugger... J'ai même poussé le bouchon en détruisant la feuille, et en créant une nouvelle, mais c'est pareil (évidemment, habituellement, la macro est bcp plus courte, puisque je ne fais que supprimer le nom, lui affecté une nouvelle plage, et l'insérer)

Si quelqu'un peut m'aider...

Merci d'avance

Sub ListeMois()
'
'
Dim PlageMois As Variant
Dim LgnEndMois As Variant
Dim PlgMois As Variant

Windows("Cpte.xls").Activate
Sheets("Rv").Visible = True
Sheets("Rv").Select
DateDeb = Range("PeriodeDebut")

Windows("Cpte.xls").Activate
Sheets("Mvts").Visible = True
Sheets("Mvts").Select

On Error Resume Next
ActiveSheet.ShowAllData

'Aller à la dernière ligne en B et retourner la valeur
Range("B16384").Select
Selection.End(xlUp).Select
DateFin = ActiveCell.Value

Sheets("MoisValides").Visible = True
Application.DisplayAlerts = False
Sheets("MoisValides").Delete

Sheets("Rv").Select
Sheets.Add
ActiveSheet.Name = "MoisValides"
Columns("D:IV").Select
Selection.EntireColumn.Hidden = True

Sheets("MoisValides").Select
Range("A1") = DateDeb
Range("C1") = DateFin
Range("B2") = DateDeb

'Génère la série...
Range("B2:B16384").DataSeries _
xlColumns, Type:=xlChronological, Date:=xlMonth, Stop:=DateFin

'Tri les dates par ordre décroissant
Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'Met à jour la liste des valeurs mois
ActiveWorkbook.Names("chpDatesListes").Delete
Range("B16384").Select
Selection.End(xlUp).Select
LgnEnd = ActiveCell.Row
PlageMois = "=MoisValides!R2C2:R" & LgnEnd & "C2 "

ActiveWorkbook.Names.Add Name:="chpDatesListes", RefersToR1C1:=PlageMois
End Sub
 
Salut,
Pour repére ta plage "PlageMois", as tu essayé d'utiliser la notation RefersToLocal ou Refers To au lieu de RefersToR1C1 dans :
PlageMois = "=MoisValides!R2C2:R" & LgnEnd & "C2 "

Pourquoi détruire ta feuille :

Sheets("MoisValides").Visible = True
Application.DisplayAlerts = False
Sheets("MoisValides").Delete

Sheets("Rv").Select
Sheets.Add
ActiveSheet.Name = "MoisValides"
Columns("D:IV").Select
Selection.EntireColumn.Hidden = True

au lieu d'un nettoyage du type :

Sub nettoie()
Application.Sheets("MoisValides").Select
Cells.Select
Selection.ClearContents
End Sub
qui conserve les plages de la feuille

Je pense que l'utilisation de la fonction "Currentregion" simplifierait la lecture et la longueur de ton code.
Bonne chance
 
Non, je ne connais pas la différence de ces Refers... Es-tu à même de me préciser dans quels cas on utilise l'un ou l'autre ?
Et le currentregion (connais pas non plus)

Le VBA n'a qu'une semaine pour moi, merci de votre indulgence !
 
Salut,
Qhand tu es dans un classeur Excel, tu vas dans Outils--->Macros-->Visual Basic Editor. Une fois dans le Visual tu peux avoir toutes les explications en ligne (avec des exemples d'utilisation) soit en faisant :
- Affichage-->Explorateur d'objets ou bien F2 ou en cliquant sur l'icone "boîte jaune de la deuxième ligne , à droite.
Là, dans la nouvelle fenêtre tu saisie ton mot clé (par exemple "Refers" ou "currentregion" et tu cliques sur la paire de jumelles. Toutes les membres VBA contenant ces mots sont selectionnées.Tu cliques sur celle qui t'interessent en fonction de la classe avec laquelle tu travailles (name, range worbok etc...).
Quand ton objet choisi est surligné en bleu tu cliques alors sur le gros point d'interrogation jaune et l'aide en ligne concernant le mot entré s'affiche. il y a un bouton exemple en haut et tu cliques dessus.
Les autres méthodes d'aide en ligne sont :
- le compagnon offfice (aide intuitive en posant une question et qui n'est pas toujours efficace).
- le ? du menu principal (à droite de "Fenêtre")-->Sommaire et Index -->Index (trié par ordre alphabétique avec selections successives en entrant ton mot) ou -->Recherche
-dans ton code, tu double-cliques sur l'instruction à expliquer, tu appuies sur le bouton droit de la souris puis sur définition. Ceci ne marche pas quand tu es en mode execution. Il faut abandonner l'execution de la macro.
- Il existe aussi de bons bouquins pour lesquels ce sitesfait de la pub
salut
 
Oups, désolé de la question, et malgré tout, merci pour la réponse... Tu sais, des livres, j'en ai acheté des tonnes, du débutant à l'expert, et, en fait, j'ai toujours le même niveau :-(

Si, en revanche, il existe de VRAIS BOUQUINS, je veux bien les acquérir... Si, un jour, Thierry, mon homonyme faisait un bouquin, avec ces grandioses exemples, je veux bien acheter son livre... Mais acheter du 'Pour les nuls' ou du Micro App... ...
 
Euh, juste pour donner la solution...

En fait, n'arrivant pas à le gérer par macro... je passe par la fonction décaler directement sur la plage concernée, et là, ô grand bonheur, ça fonctionne parfaitement !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
892
Réponses
9
Affichages
895
  • Question Question
XL pour MAC Recherche date
Réponses
5
Affichages
2 K
Retour