Répeter macro sur des colonnes

Fermé
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018 - 27 mars 2018 à 18:04
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018 - 28 mars 2018 à 10:03
Bonjour,

J'ai une question assez simple,
Supposons que je sélectionne la cellule D12.
Je suis donc sur la colonne "D"
Cela doit donc selectionner la cellule D20 et mettre son compteur à 1

Supposons que je sélectionne la cellule K98
Je suis donc sur la colonne "K"
Cela doit selectionner la cellule K20 et mettre son compteur à 1

Vous avez compris, je souhaite qu'importe la cellule que je choisis, prélever sa lettre de colonne et la réinjecter dans range("ActiveCell.Column" & 20)=1
Sauf que cela ne marche pas.

En vous remerciant

4 réponses

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
27 mars 2018 à 18:18
Bonjour

Das le module de la feuille concernée

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim co As Long
co = Target.Column
Cells(20, co).Value = Cells(20, co).Value + 1
End Sub

Cdlmnt
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
Modifié le 27 mars 2018 à 18:45
Personnellement je définirais la plage concernée par la manip
Et je n'ai pas bien compris si tu voulais remettre le compteur à 1 ou l'incrémenter de 1 (comme c'est un compteur ....). A toi de choisir

Option Explicit

Const plage = "A2:K20" ' plage concernée par la selection

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim co As Long
If Intersect(Target, Range(plage)) Is Nothing Then Exit Sub
co = Target.Column
' incremente de 1
' Cells(20, co).Value = Cells(20, co).Value + 1
' remet le compteur à 1
Cells(20, co).Value = 1
End Sub

Cdlmnt
0
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018
28 mars 2018 à 08:24
Salut en fait ce que je compte faire réellement c'est:
J'ai codé sur la colonne C plusieurs UserForm qui se déclenche lors d'un click sur la cellule C10,C11 et C17.
Je souhaite créer une répetition de ces commandes jusqu'à la colonne M.
Ainsi je me suis dis qu'il fallait en fonction d'où je click, identifier la colonne surlaquelle je suis, puis lancer l'ensemble des UF en fonction de la colonne sur laquelle on se trouve.
La question avec le Cellule=Cellule+1 était à titre d'exemple pour que je comprenne la méthodologie (sinon ca aurait assez difficile à expliquer)
Je vais prendre ce que tu m'as donné, je te remercie. Je reposte un screen ici d'ici 10min pour montrer ce que j'ai fais.

Thomas
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 Ambassadeur 1 551
27 mars 2018 à 18:20
comment fais-tu?
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
Modifié le 27 mars 2018 à 19:52
Salut yg_be

Je ne comprends pas ta question ;-()
Le code doit être copié dans le module vba de la feuille concernée et un clic dans une cellule de la plage A2:K20 agira sur la ligne 20 de la colonne de la cellule sélectionnée

Cdlmnt
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
27 mars 2018 à 20:17
bonsoir ccm81,
ma question était posée à 2015-1158.
j'ai lu "cela ne marche pas".
je demande "comment fais-tu?".
ce que tu lui proposes est parfaitement clair.
0
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018
Modifié le 28 mars 2018 à 09:11
Un membre du forum m'a aidé à débloquer:
Je poste ici le nouveau fichier corrigé:
https://mon-partage.fr/f/2Qo5oMpt/

Cependant une erreur d'incompatibilité 13 subsiste. Lorsque l'on clique sur la ligne 13 et que l'on compléte le premier UF, essayer avec environ 10 combinaisons différentes (un coup la moy semaine>moy weekend ou l'inverse). Logiquement le bug devrait survenir. J'étudie le script, les variables utilisées sont bien définis, je cherche encore, je vous tiens au courant.

Merci bien

Thomas
0
2015-1158 Messages postés 34 Date d'inscription mardi 27 mars 2018 Statut Membre Dernière intervention 14 juin 2018
Modifié le 28 mars 2018 à 10:25
Salut, je viens de regarder, c'est super cool merci beaucoup. C'est exactement ce à quoi je penser. Je suis en train de regarder ton script. J'étais pas si loin. Je vois que tu as privilégié le Cells au Range("LigCol"). En fait tu as tout débug en virant les Ranges

Peut-tu m'expliquer l'intérêt d'un module ? J'ai vu que tu as déclarer deux variables en public, la lig et la col du target cellule. Ça sert à pouvoir réutiliser les variables dans toutes la macro je suppose ?

J'ai encore eu une erreur13 avec les deux moyennes, ca vraiment l'air aléatoire:
https://mon-partage.fr/f/waWjUUJf/

MAJ1: Bon j'ai trouvé une erreur dans ma formule, ca n'a plus l'air de bugué au niveau des moyennes (Bizard d'avoir une erreur de type13 même si ma formule est fausse, je ne divise pas par 0 ou quoi que ce soit de ce genre).
Bref l'erreur à désormais basculer sur la ligne Jaune pour le calcul des dépenses.
Je te mets mon fichier, tu as juste à clicker sur la C17, puis Theorical determination, puis suivant et Erreur13 .
https://mon-partage.fr/f/Ie9bu3Pg/

Merci à toi,

Je cherche aussi de mon côté, j'up si je trouve.

MAJ2: J'ai repéré quelques Range que tu as oublié de changer en Cells (Je sais pas si c'était volontaire ?), j'ai mis des Cells.Value de partout, rien ne change.
Je suis quasi convaincu que le problème réside dans l'histoire des ".Value". Je fais des tests en supprimant des paragraphes et ca ne bug pas.

MAJ3: En ayant fait des essais, je suis convaincu que l'erreur se trouve dans ces lignes de codes car si je les enlève 0 bug. Je me relis 20 fois je ne vois pas l'erreur:

Private Sub UserForm_Initialize()
TextBox61 = Cells(2, 13).Value * (Cells(12, Col).Value - Cells(13, Col).Value) * (UserForm5.TextBox53.Value * 24 * UserForm5.TextBox56.Value + 24 * UserForm5.TextBox57.Value) * Cells(9, Col).Value
TextBox62 = (TextBox61.Value / (TextBox61.Value + Cells(17, Col).Value)) * 100
End Sub

Le UserForm5.Text... c'est normal car je dois aller cherche un textbox dans un autre UF sinon VBA me dit que la variable n'existe pas.
0