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 :

Macro --> formule YEAR


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Macro --> formule YEAR
    Bonjour,

    Je suis actuellement entrain de développer une macro et je rencontre un problème, pouvez-vous m'aider ??


    J'ai un tableau qui comporte 11 colonnes :

    - la premiere colonne est un numéro à 12 chiffres (un identifiant) column A
    - la cinquième colonne est une date (12/02/2002) par exemple column E

    Je souhaite faire un Do While pour que une fois que la macro à detecter qu'il y a plus de données (exemple a30), il fasse en column K un =year de la column E pour ne faire apparaite que l'année, voilà ce que j'ai écrit :


    ' insertion de la column YEAR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    range("A1").select
     
    do while activecell.value <>""
     
    if activecell.offset (1,0).select then
     
    activecell.offset (0,10).value = activecell.formulaR1C1 = "=YEAR(RC[-6])"
     
    else
     
    end if 
     
    loop
    Le problème c'est que dans la column K, il m'affiche False...$
    comment je peux faire pour résoudre cela ??

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    si seule ta colonne K est concernée par le résultat, je pense que la formule est plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 10).FormulaR1C1 = "=YEAR(RC[-6])"
    sans avoir détaillé le reste

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Pas besoin de sélectionner les cellules pour cela.

    Tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Dim Cellule As Range
     
      Set Cellule = Range("a1")
      Do While Cellule.Value <> ""
        Cellule(1, 11).FormulaR1C1 = "=year(RC[-6])"
        Set Cellule = Cellule(2)
      Loop
    Es-tu certain de vouloir commencer en A1?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut
    non je ne suis pas obliger de me placer en A1, ce n'est qu'un identifiant, dans la colone E les dates (format ??/??/????) et dans la colone K format (????)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut la formule fonctionne mais le résultat est #name´?
    je viens de faire le test Mr "Pierre Fauconnier", la macro fonctionne, mais les données qui s'affiche sont #NAME?, pourtant lorsque je clique dans la cellulle, elle a bien pris en compte la formule Year, il y a un petit triangle vert en haut à gauche...

    et j'ai déjà rencontré ce problème en faisant un replace "+" par " " avec la macro, il affiche des petits triangles vertss, qui fausse la formule somme, une solution pour ces deux problème ??

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Colonne E: Tu peux définir le format par Excel, normalement.

    Si tu veux le faire en VBA, c'est la propriété NumberFormat. Voici le code générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E2").NumberFormat="mm/dd/yyyy"
    La colonne K n'a pas besoin de format spécifique, puisque tu renvoies un nombre entier. Le format standard peut être utilisé sans problème.

    [EDIT]
    Pour le problème de #Name?, regarde en K ce que tu as comme formule. Es-tu sûr d'avoir correctement retranscrit le code que je t'ai donné?

    Mets une copie du code que tu as utilisé (n'oublie pas les balises de code...)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Range("E2").NumberFormat="mm/dd/yyyy"
     
    Dim Cellule As Range
     
      Set Cellule = Range("a1")
     
    Do While Cellule.Value <> ""
     
      Cellule(1, 11).FormulaR1C1 = "=year(RC[-6])"
      Set Cellule = Cellule(2)
     
     Loop

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut solution
    l'erreur provené d'un espace en trop dans VBA, je vous remercie énormément pour cette formule !

    est-il possible que vous ayez une solution pour le triangle vert ?? lorsque je remplace les + par rien, et les espaces avant les chiffres par rien aussi (se sont des données retraitées par un serveur, donc les chiffres arrivent avec 10espaces derriere et un plus à la fin: donc je cherche tjrs une solution !

    merci d'avance

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si le triangle vert est en colonne K, c'est probablement que le format des cellules est en "texte" alors qu'il doit être en standard.

    Si tu le forces en VBA, le code générique est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("k1").NumberFormat = "General"
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Macro contenant formule sur des plages nommees
    Par octane dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/11/2010, 15h44
  2. Macro avec formule utilisant des cellules contenant des formules Vlookup
    Par Isabelle86 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2010, 15h13
  3. [XL-2010] Macro ou Formule pour une recherche verticale avec condition
    Par Orsaylg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/09/2010, 13h22
  4. [XL-2003] macro ou formule
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/04/2009, 21h11
  5. Concaténer & Conditions = Macro ou formules ?
    Par Troutchu dans le forum Excel
    Réponses: 18
    Dernier message: 14/03/2008, 17h01

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