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

Excel Discussion :

boucle écriture sur la ligne suivante [XL-365]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    comptable
    Inscrit en
    Octobre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 16
    Points : 18
    Points
    18
    Par défaut boucle écriture sur la ligne suivante
    Bonjour,

    Je n'arrive pas a faire fonctionner mon code.

    A chaque fois que je le lance, il tourne x fois, comme demandé, mais au lieu d'écrire sur la ligne suivante, il ecrit sur la meme ligne, et donc écrase mes données.

    en gros, j'ai quelque cellules a récupéré sur 10 ans. (géré par annee et derannee)
    pour chaque année, je veux qu'il me récupere des infos:

    création d'une clé unique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.Range("A" & derlign).Value = b.Range("B1").Value & b.Range("B15").Value & annee
    récupération du montant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.Range("B" & derlign).Value = b.Range("D15").Value
    et les stocke sur une autre feuille.
    mais une ligne par année!

    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
    21
    22
    Sub recopie()
     
     
    Dim derlign    As Integer
    Dim annee As Integer
    Dim derannee As Integer
    Set a = Sheets("Feuil6")
    Set b = Sheets("Entités - 2058A & ABIS")
    derlign = a.[A1040000].End(xlUp).Row + 1
    annee = b.Range("D4")
    derannee = b.Range("M4")
     
    While (derannee - annee >= 0)
     
    a.Range("A" & derlign).Value = b.Range("B1").Value & b.Range("B15").Value & annee
    a.Range("B" & derlign).Value = b.Range("D15").Value
     
    annee = annee + 1
    Wend
     
     
    End Sub
    avez vous une idée?

    et j'ai une requete supplémentaire si c'est pas trop abusé

    est il possible de verifier l'existance de cette ligne avant?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.Range("A" & derlign).Value = b.Range("B1").Value & b.Range("B15").Value & annee
    la remplacer si déja existant, l'ajouter si pas encore existant?

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 135
    Points : 9 969
    Points
    9 969
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pour le premier problème, il faut incrémenter derlign à chaque tour de boucle

    par exemple juste avant ou juste après annee = annee + 1

    Au passage, je te conseille de modifier le type de cette variable en Long, sinon au delà de la ligne 32767 tu auras un dépassement de capacité.

    Pour le second problème, je n'ai pas tout compris, mais tu peux utiliser la méthode Range.Find pour vérifier si la valeur existe déjà

  3. #3
    Membre à l'essai
    Homme Profil pro
    comptable
    Inscrit en
    Octobre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Merci pour ces 1ers éléments!

    pour la derniere partie, voici ce qu'il va se produire:

    les données que je récupere peuvent varier selon le filtre que choisi en amont.

    Donc je declenche la macro, qui récupere les éléments que je demande ci dessus, soit par exemple:

    clé------------------------------------------------------------------------------- Montant
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2025 ----1
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2026 ----2
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2027 ----3
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2028 ----4
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2029 ----5
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2030 ----6
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2031 ----7
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2032 ----8
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2033 ----9
    SA RéseauRésultat 2058-A avant imputation déficits pré-intégration2034 ----10

    ces données sont conservées. et je passe d'un filtre a un autre.

    Ma question est la suivante:

    Lorsque je lance cette macro, est il possible qu'il vérifie que la clé qu'il doit ecrire, existe dans la liste ci dessus? si oui, juste remplacer le montant, sinon, écrire une nouvelle ligne?

    encore merci,

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 135
    Points : 9 969
    Points
    9 969
    Billets dans le blog
    5
    Par défaut
    Un exemple à main levé, je n'ai pas testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    While (derannee - annee >= 0)
        Cle = b.Range("B1").Value & b.Range("B15").Value & annee
        Set Cell = a.Columns(1).Find(Cle, , , xlWhole)
     
        If Not Cell Is Nothing Then  'la cle existe déjà
            Cell.Offset(0, 1).Value = b.Range("D15").Value
        Else
            a.Range("A" & derlign).Value = b.Range("B1").Value & b.Range("B15").Value & annee
            a.Range("B" & derlign).Value = b.Range("D15").Value
            derlign = derlign + 1
        End If
     
        annee = annee + 1
    Wend
    Ne pas oublier de déclarer les deux variables en début de procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Cell As Range
    Dim Cle As String

  5. #5
    Membre à l'essai
    Homme Profil pro
    comptable
    Inscrit en
    Octobre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Ca marche super bien, merci! vous êtes au top

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/04/2015, 16h02
  2. Ecrire sur la ligne suivante d'un fichier CSV
    Par Prodiguy dans le forum Langage
    Réponses: 9
    Dernier message: 29/07/2013, 10h16
  3. Réponses: 1
    Dernier message: 27/04/2010, 20h39
  4. Reporter valeur enregistrement sur plusieurs lignes suivantes
    Par oarnold dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/03/2008, 17h52
  5. Résultat de boucle <select> sur 2 lignes
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/09/2006, 09h31

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