Besoin d'aide en VBA

Résolu
Kaddour Jilali Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   -  
Kaddour Jilali Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   -
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 !
Configuration: Windows XP
Firefox 3.0.8

6 réponses

  1. Onemart06
     
    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
  2. Kaddour Jilali Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   12
     
    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
  3. Onemart06
     
    Plaisir.
    bon courage pour la suite du prog

    Je reste pas loin. :D
    0
  4. Kaddour Jilali Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   12
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. onemart06
     
    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
  7. Kaddour Jilali Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   12
     
    Ca fonctionne impec, je te remercie !
    0