EXCEL VBA : Etendre une macro sur une colonne

Résolu/Fermé
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019 - 3 mai 2018 à 11:50
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019 - 11 mai 2018 à 08:20
Bonjour,


Mon problème est tout simple mais même en bidouillant dans tous les sens je n'ai pas réussi.. Peut-etre allez-vous m'aider :)

Voici mon code :
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "W8" Then Application.Run "Feuil1.ASA"


End Sub
Sub ASA()


Range("AE8").Value = Range("AE8").Value & Chr(10) & Range("W8").Value & Chr(10) & Date


End Sub


Ce code s'applique sur une cellule en particulier et je souhaiterais l'étendre sur toutes les colonnes concernées (W et EA), auriez-vous, s'il vous plait, la réponse à mon problème ?



Bien à vous,


Awzgg (:
A voir également:

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 3 mai 2018 à 12:02
Bonjour,

avec la méthode Intersect

voir ceci:

https://forum.excel-pratique.com/viewtopic.php?t=1314


0
perreet Messages postés 230 Date d'inscription vendredi 30 janvier 2009 Statut Membre Dernière intervention 3 mai 2018 20
3 mai 2018 à 13:48
Bonjour,
Tu peux essayer de remplir ton Range() avec les méthodes cells(row,column)
En faisant une boucle, tu devrais pouvoir sélectionner et remplir ce que tu veux.
https://docs.microsoft.com/fr-FR/office/vba/api/Excel.Range.Cells

Bon courage
0
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019
3 mai 2018 à 14:21
Bonjour,

Merci à vous deux cela m'a permis d'avancer.


J'ai fait avec l'intersect mais ça ne fonctionne qu'à moitié. Qu'importe la cellule changée en w la valeur que je souhaite rajouter est ajoutée tout le temps en case AE8. Ce que je voudrais moi c'est que la valeur soit reportée sur la ligne correspondante. Mais même en bidouillant je ne comprends pas pourquoi ça ne s'applique pas.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("W:W")) Is Nothing Then Application.Run "Feuil1.ASA"

End Sub

Sub ASA()

Range("AE8").Value = Range("AE8").Value & Chr(10) & Range("W8").Value & Chr(10) & Date

End Sub
0
perreet Messages postés 230 Date d'inscription vendredi 30 janvier 2009 Statut Membre Dernière intervention 3 mai 2018 20
3 mai 2018 à 14:32
Dans la ligne Range("AE8).Value = .................
Il faut mettre le résultat du Intersect()
0
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019
3 mai 2018 à 14:39
Mais en faisant ça je n'ai plus mes données qui se rajoutent dans la cellule AE une fois que je change la valeur en W.
0
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019
3 mai 2018 à 15:04
Il faudrait que j'utilise une variable mais je ne comprends pas avec les exemples et explications sur internet..
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 mai 2018 à 15:09
Je ne comprends pas du tout ce que tu veux faire!

Qu'importe la cellule changée en w la valeur que je souhaite rajouter est ajoutée tout le temps en case AE8

en mettant cela tu demandes que le résultat soit ici:

Range("AE8").Value =


Explique exactement ce que tu veux obtenir.

Si c'est additionner 2 cellules, c'est impossible avec le format date en bout de chaine!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 4 mai 2018 à 11:05
Bonjour
Cs le pivert(bonjour) a raison d'employer un douOption Explicitble clic car worksheetchange ne fonctionne pas sur une liste déroulante....

AE7 ne doit pas ^tre vide (un espace suffit ou peut ^tre "historique


Option Explicit
'-------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$W$8" Then
Call asa(Target.Value)
End If
End Sub
'---------------------------------
Sub asa(valeur)
Dim ligvid As Integer
ligvid = Columns("AE").Find(what:="", after:=Range("AE7")).Row
With Cells(ligvid, "AE")
.Value = valeur & " " & Date
.Borders.Weight = xlThin
End With
End Sub


0
Awazagaga Messages postés 31 Date d'inscription lundi 26 mars 2018 Statut Membre Dernière intervention 14 juin 2019
11 mai 2018 à 08:20
Bonjour à tous,


Tout d'abord merci pour vos réponses. J'ai réussi, avec un peu d'aide à trouver la solution. Voici comment le sujet a été traité (et qui marche parfaitement) :

Private Sub Worksheet_Change(ByVal r As Range)
If Not Intersect(r, Range("W:W")) Is Nothing Then
    With Cells(r.Row, "AE")
        .Value = .Value & Chr(10) & r & " - " & Date
    End With
End If
End Sub



Bien à vous,

Awzgg
0