Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

MACRO/EXCEL: Quel est cellule précédente?

OctetPlus, le dimanche 11 février 2007 à 20:44:35
Bonjour,

Je cherche à savoir si c'est possible de connaitre la cellule précédente, elle peut être de tout côté ou ailleur avec la souris.

Je doit revenir modifier la cellule que je viens de modifier pour la divisé par 2 et afffecté sa voisinne de droite de l'autre moitié. Je souhaite garder la cellule actuel comme active (d'où l'utilisation des Offset() ).

Voici le code que j'ai jusqu'à présent:

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Offset(-1, 0).Interior.ColorIndex = 34 Then
    If ActiveCell.Offset(-1, 1) = Vide Then
        valeur = Target
        If valeur <> Vide Then
            ActiveCell.Offset(-1, 0).Value = valeur / 2
            ActiveCell.Offset(-1, 1).Value = valeur / 2
        End If
    End If
End If
 
End Sub

De plus, pourquoi cette ligne?
ActiveCell.Offset(-1, 0).Value 

Ma valeur est un chiffre Expotenciel à la -65 et que la ligne qui suit contient la bonne valeur.

Comme vous pouvez voir je tiens compte seulement que la cellule active est en dessous de celle que je viens de modifier.


Merci, votre aide est grandement apprécié.

Octetplus
Configuration: Windows XP
Internet Explorer 6.0

EXCEL 2000
Répondre à OctetPlus  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
JvDo, le dimanche 11 février 2007 à 23:20:33
Bonsoir,

la cellule que tu as modifiée est TARGET.
c'est donc avec elle que tu dois travailler et pas activecell.offset(....)

Ma valeur est un chiffre Expotenciel à la -65 et que la ligne qui suit contient la bonne valeur.
Qu'est-ce que ça veux dire?

Comme vous pouvez voir je tiens compte seulement que la cellule active est en dessous de celle que je viens de modifier.
Pas vraiment, en fait tu considères que la cellule modifiée est celle au dessus de la cellule active

pour finir, ta variable Vide, d'où sort-elle?

cordialement
Répondre à JvDo

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
OctetPlus, le mardi 13 février 2007 à 16:29:19
Merci,

Ma variable Vide est pour vérifier s'il y a quelque chose dans la cellule. Peut importe sa nature. Donc Vide n'est pas initialisé alors elle peut prendre n'importe quel valeur, humm.. Je crois que j'ai une erreur là!

La variable TARGET est la valeur de la cellule où je suis présentement. C'est la la nouvelle cellule ou je me suis déplacer. Mais moi je cherche à avoir de l'information sur la dernière cellule modifier. Et c'est celle là que je le plus de diffilculté.

Merci

OctetPlus
Répondre à OctetPlus

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
JvDo, le mardi 13 février 2007 à 18:59:38
Bonsoir,

c'est avec Private Sub Worksheet_SelectionChange(ByVal Target As Range) que target représente la cellule d'atterrissage

avec Private Sub Worksheet_Change(ByVal Target As Range), target représente la cellule qui vien d'être modifiée.
pour être encore plus précis, si tu tapes toto dans la cellule A10 et que tu cliques dans la cellule Z1, target vaudra l'adresse A10

A+
Répondre à JvDo

4


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
OctetPlus, le dimanche 25 février 2007 à 13:28:47
Bonjour,

Quel est le meilleur moyen de vérifier si la cellule est vide (qu'il n'y a pas de valeur)

Jusqu'à présent, je suis rendu à ça:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Interior.ColorIndex = 34 Then
    If EstVide(Target.Offset(-1, 0)) Then
        If ESTNUM(Target.Value) Then
            Target.Value = Target.Value / 2
            Target.Offset(-1, 0).Value = Target.Value
        End If
    End If
End If
 

End Sub


Mais EstVide et ESTNUM ne sont pas reconnue!

Quel autre solution me proposez-vous?

Merci beaucoup de votre aide, c'est très apprécier.

Octet Plus
Répondre à OctetPlus

5


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
OctetPlus, le dimanche 25 février 2007 à 15:06:32
Enfin, j'ai travaillé très fort et voilà ça fonctionne maintenant.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As Single

If Target.Interior.ColorIndex = 34 Then
    If IsEmpty(Target.Offset(0, -1)) Then
        If IsNumeric(Target.Value) Then
            Valeur = Target.Value / 2
            Target.Offset(0, -1).Value = Valeur
            Target.Value = Valeur
        End If
    End If
End If
 
End Sub


La technique est que je change la cellule du gauche de la cellule modifié. Si je prenais la cellule de droite alors il bouclais et toute mes cellules de droite étaient diviser par 2, exemple Cellule A10 change, alors A11 = A10/2, puis A12=A11/2, puis A13=A12/2, etc. Alors que si je change à gauche il s'arrête dès qu'il trouve une valeur.

Merci à tous.

OctetPlus
Répondre à OctetPlus

7


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le samedi 23 février 2008 à 18:48:03
Bonjour,

Pour ne pas tomber dans la récursivité de l'évènement, utilisé :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As Single

Application.EnabledEvents = False
If Target.Interior.ColorIndex = 34 Then
    If IsEmpty(Target.Offset(0, -1)) Then
        If IsNumeric(Target.Value) Then
            Valeur = Target.Value / 2
            Target.Offset(0, -1).Value = Valeur
            Target.Value = Valeur
        End If
    End If
End If
Application.EnabledEvents = True
 
End Sub


ou

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As Single

If Target.Interior.ColorIndex = 34 Then
    If IsEmpty(Target.Offset(0, -1)) Then
        If IsNumeric(Target.Value) Then
            Valeur = Target.Value / 2
            Application.EnabledEvents = False
            Target.Offset(0, -1).Value = Valeur
            Target.Value = Valeur
            Application.EnabledEvents = True
        End If
    End If
End If
 
End Sub



Lupin
Répondre à Lupin.A

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 OctetPlus, le dimanche 24 février 2008 à 14:07:36
Merci en beaucoup, c'est encore mieux qu'avant.

Car avant je devais changer la couleur de la cellule où je voulais l'arrêter. L'à ça fonctionne encore mieux. J'aurais plus de plaisir à utiliser mon classeur.


OctetPlus
Répondre à OctetPlus

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
coeurbleu, le samedi 23 février 2008 à 17:51:55
Bonjour a tous ;

j'ai un grand problème, car la ou je travail je perdre bcq de temps uniquement pour mettre mon tableau a jours car j'ai chaque fin de semain un tableau d'expédition qui porte bcq d'information Exemple: nom de vendeur, nom de client, nom de produit , prix achat, prix de vente, N° de série, date de sortie date d'arrivier, N° de commande....etc et tout ça sur une sentaine de ligne selon le nombre de produit ( chaque produit est affecter pour un client).

se que je cherche est de créer un macro pour faire la mise a jours automatique c-a-d si il trouve pas de chanchement il dit OK , et si il touver un changement par exemnle dans la date de sortie ou date d'arrivée ou changement d'affectation il le mettre a jour, et aussi il ajoute dans mon tableau les nouveau produit (qui sont commandé)

Pour information: je base ma recherche sur le ID (N° de commande) de chanque produit.

Merci par avance de m'idée car malheureusement je connai pas le Basic.

Cordialement

Coeurs bleu
Répondre à coeurbleu

8


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le samedi 23 février 2008 à 19:10:23
bonjour

Coeurbleu n'as-tu pas l'impression de jouer au pique-assiette ?
Ce sujet ne traite pas ton problème alors crée un sujet à toi sinon tu n'auras pas de solution.

Ps : un petit bonjour amical au canadien qui a probablement résolu le souci de OctetPlus
Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme

Résultats pour MACRO/EXCEL: Quel est cellule précédente?

Macro Excel recherche multiple (Résolu) Bonjour, J'aimerais écrire une macro excel qui me permettrait de vérifier si le contenu de ma cellule appartient à une liste de valeur prédéfinie ou est présente dans une plage d'autres cellules précise. Et si oui de faire telle ou telle... www.commentcamarche.net/forum/affich-3623448-macro-excel-recherche-multiple
Lancement automatique de macro excel (Résolu) Bonjour à tous, J'ai 3 questions pour faire fonctionner des macros Excel en automatique. 1 - Peut-on lancer automatiquement selon un timer une macro excel ? 2 - Peut-on lancer automatiquement une macro par le contenu d'une cellule ? le... www.commentcamarche.net/forum/affich-3240803-lancement-automatique-de-macro-excel

Résultats pour MACRO/EXCEL: Quel est cellule précédente?

Macro excel Extraire prix dans texte (Résolu)Bonjour, Je voudrai faire une macro excel qui me permette d'extraire un prix dans un phrase pour pourvoir ensuite le comparer a la valeur d'une autre cellule. - Est-il possible d'extraire selement les caractères numériques d'une... www.commentcamarche.net/forum/affich-6521911-macro-excel-extraire-prix-dans-texte
Macro excel Sélection plage (Résolu)Bonjour, Je souhaite faire une macro excel pour un copier-coller d'une sélection de quelques cellules en fonction d'où se trouve le curseur. Par exemple : le curseur se trouve en C11, je veut faire un copier-coller spécial valeur de C11 à... www.commentcamarche.net/forum/affich-6079260-macro-excel-selection-plage
Macro excel envoi email avec piéce jointe (Résolu)Bonjour , je suis nouveau stagiaire . Ma question est comment faire pour creer une macro excel qui permet d'envoyer automatiquement un mail (via outlook) avec classeur excel joint. La macro doit ouvrir la feuille excel à mettre à jour (adr de la... www.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe