Besoin d'aide en VBA

Résolu/Fermé
Kaddour Jilali Messages postés 161 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 mars 2010 - 10 avril 2009 à 14:01
Kaddour Jilali Messages postés 161 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 mars 2010 - 15 avril 2009 à 17:14
Bonjour,
Mon problème est très simple. Je veux que lorsque je change une cellule, celle d'à côté change aussi.
Exemple : quand je change la cellule B3, je veux qu'il y ai une action sur la cellule A3.

Voilà ce que j'ai fait pour commencer (je débute en VBA)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim j As Integer
For i = 3 To 100
MsgBox ("i=" & i)
If Range("C" & i + 1) = "" Then j = i + 1
MsgBox ("j=" & j)
If Range("C" & i + 1) = "" Then Exit For
Next
Range("b" & j) = "a"
End Sub

Ca fonctionne normalement, mais quand j'ai "a" dans la cellule, ça recommence indéfiniment au lieu de s'arrêter.

Pour aller plus loin, ce que je veux faire à terme, c'est que l'action ne se fasse que sur la cellule en face et qu'Excel évite de faire tourner la macro sur toutes les lignes.
Merci d'avance !

6 réponses

Salut,


ligne_1 as integer
colonne_1 as interger

ligne_1 = Activecells.rows ' la tu recupere le numéros de la ligne qui vient d'etre modifier
colonne_1 = Acticells.column 'la colonne

Cells(ligne_1 , colonne_1 - 1).value = <ta modif/valeur> 'c'est la case à droite de celle que tu auras modifiée

et tu lances ca à chaque changement de valeur. je suis pas sur que sa soit l'ideal, a toi d'amélioré aprés, je reste a ta dispo
0
Kaddour Jilali Messages postés 161 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 mars 2010 12
10 avril 2009 à 15:52
Merci beaucoup pour ton aide !
J'ai utilisé ton code, voici la macro :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ligne_1 As Integer
Dim colonne_1 As Integer
ligne_1 = ActiveCell.Row
colonne_1 = ActiveCell.Column
Cells(ligne_1 - 1, colonne_1 - 1).Value = "a"
End Sub

Ca fonctionne comme je veux. Ca va me servir de base pour la suite. En fait au lieu de mettre "a" dans la cellule d'à côté, je veux mettre une formule (recherchev mais je sais pas encore bien l'utiliser). Je te tiens au courant de l'avancement.
Merci encore.
0
Plaisir.
bon courage pour la suite du prog

Je reste pas loin. :D
0
Kaddour Jilali Messages postés 161 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 mars 2010 12
10 avril 2009 à 16:44
J'y suis presque. Il me reste juste une chose à faire, lancer la macro quand la colonne B change, mais juste la colonne B.
Et là, je sais pas comment faire.
Des idées ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Faut que tu test la valeur de la colonne comme suit :


Dim ligne_1 As Integer
Dim colonne_1 As Integer
ligne_1 = ActiveCell.Row
colonne_1 = ActiveCell.Column

if colonne_1 = 2 then ' 2 étant la 2eme colonne soit 'B'
Cells(ligne_1 - 1, colonne_1 - 1).Value = "a"
....'le reste de ton nouveau code
end if

la modif ne sera executer que si la colonne de la case active est 2

voila a tte
0
Kaddour Jilali Messages postés 161 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 mars 2010 12
15 avril 2009 à 17:14
Ca fonctionne impec, je te remercie !
0