VBA cellule egale a une autre

Résolu/Fermé
Signaler
Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
-
Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
-
Bonjour a tous,

Je suis debutant sur excel et VBA et j'aimerai une chose qui me parait simple mais je n'y arrive pas.

J'aimerai que sur ma feuille de calcul une cellule designee soit egale a une autre cellule.

Cependant, je veux que le changement se fasse automatiquement dans la seconde cellule lorsque le resultat de la premiere change.

J'espere que c'est assez clair. Merci par avance pour votre aide.

PS : desole pour les fautes et accent, je suis avec un clavier anglais.

2 réponses

Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
543
Solution bis

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim Addr As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("Z7:Z10")) Is Nothing Then
For Each Cel In Range("Z7:Z10")
If Cel <> "" Then Addr = Cel.Address
Next Cel
If Addr <> "" Then
Range("Z11") = Range(Addr)
Else
Range("Z11") = ""
End If
End If
End Sub

A+
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
1
Nickel c'est ce que je voulais Merci beaucoup.

Pourrais tu prendre quelques minutes pour m'expliquer cette partie stp

If Not Intersect(Target, Range("Z7:Z10")) Is Nothing Then
For Each Cel In Range("Z7:Z10")
If Cel <> "" Then Addr = Cel.Address

Dans l'optique d'en savoir plus d'apprendre et de comprendre aussi merci
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
543
If Not Intersect(Target, Range("Z7:Z10")) Is Nothing Then
est équivalent à "si la cellule modifiée appartient à la plage Z7:Z10"

For Each Cel In Range("Z7:Z10")
If Cel <> "" Then Addr = Cel.Address
est équivalent à "balaye chaque cellule de la plage Z7:Z10 et, si la cellule n'est pas vide, affecte son adresse à la variable Addr".
De cette manière, Addr correspond à l'adresse de la dernière cellule renseignée.

A+
Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
1
Merci beaucoup =D
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
543
Bonjour,

Si tu souhaites reporter le résultat de A1 dans B1 tu n'as pas besoin de VBA, il suffit d'écrire la formule =A1 dans B1.

A+
Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
1
Merci pour ta reponse Gyrus, cependant je me rend compte que ce n'etait pas assez clair lol.

En fait, je veux mettre la valeur d'une cellule egale a la derniere cellule non vide de la plage et que cela se change a chaque fois que la derniere cellule non vide change.

Ma Syntaxe pour etre plus clair : Range("Z11").Value = Range("Z10").Value.End(xlUp).Value
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
543
Tu peux utiliser l'évènement Change de la feuille.
Dans la procédure suivante, on affecte à A1 la valeur de la dernière ligne renseignée de la colonne Z
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 26 Then
Range("A1") = Range("Z" & Rows.Count).End(xlUp)
End If
End Sub

A+
Messages postés
21
Date d'inscription
jeudi 27 février 2014
Statut
Membre
Dernière intervention
26 mars 2014
1
Voila ce que j'ai mis cela marche seulement sa me met la valeur de la cellule Z 25.
Ma cible se trouve entre Z7 et Z10

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 26 Then
Range("Z11") = Range("Z" & Rows.Count).End(xlUp)
End If
End Sub