IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Syntaxe pour calculer une valeur et la renvoyer dans une autre feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Par défaut Syntaxe pour calculer une valeur et la renvoyer dans une autre feuille
    Bonjour,

    Je suis novice en écriture de macros avec VB et j’aimerai avoir de l’aide par rapport au problème suivant. J’ai des données qui « tombent » toutes les semaines et j’aimerai les traiter.
    Ici, mon but est de calculer une valeur issue d’une colonne de nombre. Cette valeur, j’aimerai la mettre dans une autre feuille.
    J’ai essayé d’écrire une macro mais elle ne marche pas encore.

    Voici l'ébauche de ma macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Calculs()
    Dim F_analyse As Worksheet
    Dim F_resultats As Worksheet
    Dim LstRw As Long
    Dim provisoire As Double
     
     
    Set F_analyse = ActiveWorkbook.Sheets(1) 'lieu des données= "Analyse "
    Set F_resultats = ActiveWorkbook.Sheets(2)
     
     
    F_analyse.Select 'passage dans la feuille des données
    LstRw = .Cells(.Rows.Count, 1).End(xlUp).Row => erreur de compilation : référence incorrecte ou non qualifié (mais je ne vois pas pourquoi car pour moi cette variable qui me sert à aller jusqu'à la dernière valeur de la colonne)
    provisoire = "=SOMME(&CT$4:$CT$ & LstRw)/(60*1000)" 'somme de la case A4 à la dernière valeure de cette colonne'
     
    F_resultats.Select 'passage dans la feuille des résultats
    provisoire = Range("A2") 'provisoire contient la valeur de la case A2'
     
     
    End Sub
    Ici, mon but est d’acquérir la bonne syntaxe pour ensuite la transposer pour beaucoup d’autres calculs.
    Merci d’avance pour votre aide.
    Cordialement,

    Fabien

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    LstRw = .Cells(.Rows.Count, 1).End(xlUp).Row
    Tu dois spécifier le nom de la feuille devant .Cells

    Comme tu as déjà sélectionné la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstRw = ActiveSheet.Cells(.Rows.Count, 1).End(xlUp).Row
    Autrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstRw = Sheets(2).Cells(.Rows.Count, 1).End(xlUp).Row 'ou autre

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Par défaut
    Cela ne marche pas quand même.
    La fenêtre d'erreur me surligne le .Rows (qui est dans la parenthèse)
    LstRw = ActiveSheet.Cells(.Rows.Count, 1).End(xlUp).Row

    Sais tu pourquoi?

    Merci d'avance.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Même motif que pour le Cells : tu ne spécifies pas l'objet parent.

    Quand on commence un nom d'objet (ou une chaîne d'objet) par un ".", il faut qu'il soit encadrer d'un With pour que l'objet parent soit définit.

    Sinon, si l'objet parent est implicite, il ne faut pas mettre de "." au début.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveSheet
       LstRw = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    permet d'appliquer le ActiveSheet à tous les objet commençant par un "." entre With et End With.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je suis allé un peu trop vite...
    J'aurais dû enlever aussi le point de .Rows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstRw = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    Mais Menhir a bien expliqué l'histoire des points

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par parmi Voir le message
    J'aurais dû enlever aussi le point de .Rows
    Je pense qu'il aurait plutôt fallu ajouter une Sheet (ActiveSheet ou une des variables renseignée juste avant).
    Parce que s'il n'y a pas besoin de référence à une feuille pour le Rows, il n'y en a pas non plus besoin pour le Cells (et inversement).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Renvoyer une valeur sans la choisir dans une liste deroulante
    Par maclolo2 dans le forum IHM
    Réponses: 1
    Dernier message: 03/08/2012, 10h37
  2. Réponses: 12
    Dernier message: 21/08/2006, 16h25
  3. Utiliser une valeur d'un formulaire dans un autre ?
    Par jessy212 dans le forum Access
    Réponses: 3
    Dernier message: 21/08/2006, 13h05
  4. insérer une valeur de type float dans une abse de données
    Par Stephane_br dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2005, 10h47
  5. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par Mimisator dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo