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 -
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 !
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 !
A voir également:
- Besoin d'aide en VBA
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
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
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
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.
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.
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 ?
Et là, je sais pas comment faire.
Des idées ?
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
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