XL 2019 Remplissage automatique des cellules excel à partir d'une Macro

ajox01

XLDnaute Junior
Bonjour
J'ai besoin de votre aide: Je voudrais remplir la colonne B du fichier joint de manière automatique à partir d'une Macro. Je voudrais que le chiffre "1" s'affiche en face de chaque mois à chaque fois que j'exécute la Macro....

Merci de votre aide
Cordialement
ajox01
 

Pièces jointes

  • Exercice.xlsx
    9.1 KB · Affichages: 6

ajox01

XLDnaute Junior
Bonjour Staple 1600

Je suis nouveau dans le VBA. Je souhaite que vous me donniez tout le protocole. J'ai l'impression que vous m'aviez donné le nœud. J'ai fait un copier/coller de la syntaxe mais quand je suis allé dans la boite de dialogue pour exécuter la macro, le contenu était vide....

Bien à vous
 

ajox01

XLDnaute Junior
Bonjour Ajox,
Un truc dans le genre devrait suffire :
VB:
Sub RemplitColA()
For i = 2 To [A65000].End(3).Row
    [B:B].Cells(i, 1) = 1
Next i
End Sub
Rebonjour Sylvanu
Ca commence à marcher. Au fait je suis nouveau dans le VBA. Je n'arrive pas à adapter. Je voulais définir 7 macros:
1) Pour T1 je voudrais avoir "1" en face de chaque mois de Janvier 2020 à Mars 2020
2) Pour T2 je voudrais avoir "1" en face de chaque mois de Avril 2020 à Juin 2020
3) Pour S1 je voudrais avoir "1" en face de chaque mois de Janvier 2020 à Juin 2020
4) Pour T3 je voudrais avoir "1" en face de chaque mois de Juillet 2020 à Septembre 2020
5) Pour T4 je voudrais avoir "1" en face de chaque mois de Octobre 2020 à Décembre 2020
6) Pour S2 je voudrais avoir "1" en face de chaque mois de Juillet 2020 à Décembre 2020
7) Pour Year je voudrais avoir "1" en face de chaque mois de Janvier 2020 à Décembre 2020

Merci pour votre aide
ajox01
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Ca n'a rien à voir avec la demande initiale !
Voici un type simple de macro pour T1 :
VB:
Sub Macro_T1()
For i = 2 To [A65000].End(3).Row    ' pour chaque cellule non vide de la colonne A
    ' Si 2020 et mois entre Janvier et Mars
    If Year([A:A].Cells(i, 1)) = 2020 And Month([A:A].Cells(i, 1)) >= 1 And Month([A:A].Cells(i, 1)) <= 3 Then
        ' alors on met un 1 dans la cellule en colonne B
        [B:B].Cells(i, 1) = 1
    End If
Next i
End Sub
Les autres seront les mêmes mais adaptées aux hypothèses.
Comme c'est un exercice, je vous laisse les adapter. :)
 

Pièces jointes

  • Exercice.xlsm
    36.6 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Bonjour le fil

=>ajox01
[Précisions]
J'ai bâti ma réponse du message#3 en me basant sur la réponse de sylvanu (message#2)
Donc le code que je proposais fait exactement la même chose que sa macro Sub RemplitColA().
La suite du fil montre comme le note sylvanu que la question est en fait tout autre.
 

ajox01

XLDnaute Junior
Bonjour,
Ca n'a rien à voir avec la demande initiale !
Voici un type simple de macro pour T1 :
VB:
Sub Macro_T1()
For i = 2 To [A65000].End(3).Row    ' pour chaque cellule non vide de la colonne A
    ' Si 2020 et mois entre Janvier et Mars
    If Year([A:A].Cells(i, 1)) = 2020 And Month([A:A].Cells(i, 1)) >= 1 And Month([A:A].Cells(i, 1)) <= 3 Then
        ' alors on met un 1 dans la cellule en colonne B
        [B:B].Cells(i, 1) = 1
    End If
Next i
End Sub
Les autres seront les mêmes mais adaptées aux hypothèses.
Comme c'est un exercice, je vous laisse les adapter. :)
Merci beaucoup Sylvanu
Puisse Dieu te bénir!
 

Staple1600

XLDnaute Barbatruc
Re

sylvanu
Oui, j'ai vu
Mais je lui précisais juste pourquoi mon code ne faisait pas ce qu'il voulait qu'il fasse mais qu'il fait ce que toi tu faisais dans le message#2
;)
D'ailleurs, puisqu'on parle initiation
J'avais aussi commis ces deux variantes ;)
VB:
Sub RemplitColA_ter()
With Cells(2, 2)
.Value = 1: .Resize(Cells(Rows.Count, 1).End(3).Row - 1).FillDown
End With
End Sub
Sub RemplitColA_quatro()
[B2] = 1
[B2].Resize(Cells(Rows.Count, 1).End(3).Row - 1).DataSeries Step:=0
End Sub
 

Staple1600

XLDnaute Barbatruc
re

Mais je suis cool (comme l'indique la présence des deux ;))
La preuve, je ponds encore (mais plus par futilité que par utilité - faut bien que le temps passe, pendant que ma lessive tourne ;))
VB:
Sub RemplitColA_cinquo()
With [B2].Resize(Cells(Rows.Count, 1).End(3).Row - 1)
.FormulaR1C1 = "=ROW(R1C1)"
.Value = .Value
End With
End Sub
Cela c'est pour le point#1 ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 430
Membres
102 889
dernier inscrit
monsef JABBOUR