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 :

Incrémentation Feuille Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Par défaut Incrémentation Feuille Excel
    Bonjour,

    Je suis débutante en VBA et j'ai un soucis avec mon programme. Pour faire plus simple je vous le montre :

    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 Macro2()
     
        x = "D138"
        y = "D139"
        i = 0
     
        While x <> 0 And y <> 0
     
            i = i + 1
            Range("A1:J75").Select
            ActiveWindow.SmallScroll Down:=-105
            ActiveCell.FormulaR1C1 = "='Feuil' + i !R[66]C[2]"
            Range("B6").Select
            ActiveCell.FormulaR1C1 = "='Feuil' + i !R[67]C[1]"
            Range("B7").Select
            ActiveWindow.SmallScroll Down:=39
     
        Wend
    End Sub
    Voila alors mon soucis se situe à la ligne 'Feuil' + i
    Apparemment Excel n'apprécie pas trop trop
    J'aimerai en faite incrémenter mon numéro de feuille à chaque itération de ma boucle while car à chaque nouvelle itération je dois récupérer une valeur dans la feuille précédente.
    Exemple : Feuille 2 a comme valeur x & y ; dans ma feuille 3 je veux récupérer ce X et Y et ainsi de suite pour chaque feuille.
    J'espère que je suis assez claire dans mes explications
    Le titre de ma demande n'est peut-être pas très approprié et je m'en excuse.
    J'apprend vraiment sur le tas donc c'est pour cela que je viens solliciter votre aide car malgré avoir chercher je n'ai rien trouvé qui correspondrait à mes attentes

    Merci d'avance !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CeciliaBvx Voir le message
    Bonjour,

    Une fonction indirect ne suffirait pas ? boisgontierjacques.free.fr

    Salut Jacques : Je me servais de tes fichiers (datant du MPFE si je me souviens bien), mais là ton site est une vraie pépite.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Tout ce qui est entre guillement est considéré comme du texte.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "='Feuil' + i !R[66]C[2]"
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "='Feuil" & i &"'!R[66]C[2]"
    edit: code modifié

  4. #4
    Inactif  
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Par défaut
    Bonjour,

    Merci de ta réponse halaster08. Cependant j'ai essayé ce que tu m'avait dit mais cela ne fonctionne pas, il y a une erreur de compilation, la ligne est surligné en jaune.

    Eric KERGRESSE, j'ai en effet vu cette fonction indirect mais je crois qu'elle n'est pas approprié à ce que je voudrai faire.

    On m'a parlé de :
    Sheets ((Sheets.Count)-1)
    Mais je n'arrive pas à l'utilisé dans mon code, car moi ce que je voudrai c'est récupéré la cellule B1 de la feuille d'avant à chaque itération.
    Mais peut-être qu'avec vos connaissances vous auriez une piste pour moi ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    J'ai édité mon code précédent une aposthrophe était mal placée.
    Par contre tu dis vouloir récupérer la cellule B1 mais ce n'est pas du tout ce que fait ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.value= sheets(activesheet.index -1).range("B1").value

  6. #6
    Inactif  
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Par défaut
    B1 était un exemple donné pour bien vous illustré ce que je cherche à faire
    Je vais essayé ton code alors !

  7. #7
    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 CeciliaBvx Voir le message
    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 Macro2()
     
        x = "D138"
        y = "D139"
        i = 0
     
        While x <> 0 And y <> 0
     
            i = i + 1
            Range("A1:J75").Select
            ActiveWindow.SmallScroll Down:=-105
            ActiveCell.FormulaR1C1 = "='Feuil' + i !R[66]C[2]"
            Range("B6").Select
            ActiveCell.FormulaR1C1 = "='Feuil' + i !R[67]C[1]"
            Range("B7").Select
            ActiveWindow.SmallScroll Down:=39
     
        Wend
    End Sub
    Même sans savoir exactement ce que tu veux faire, ton code ne peut pas fonctionner pour plusieurs raisons.

    La condition pour sortir de ta boucle est x <> 0 And y <> 0. Or, il n'y a rien dans ta boucle qui modifie l'une ou l'autre de ces variables.
    Donc, ta boucle va tourner indéfiniment ou, plus exactement, jusqu'à ce qu'une erreur se produise.
    A mon avis, tu devrais remplacer ton While par un simple For To sur la variable i.

    Deuxièmement, à chaque tour de boucle, tu écris dans des cellules dont l'adresse ne change pas.
    Donc, chaque tour de boucle détruit ce qu'à fait le tour précédent.

    Petit détail supplémentaire : supprime les SmallScroll, sans doute issus d'un code obtenu avec l'enregistreur de macro mais totalement inutiles.

    Une fois que tu auras réglé ces points majeurs, tu pourras t'attaquer au problème de ta formule (vu que cette erreur est la seule chose qui t'évite d'exécuter une boucle infinie).
    Je ne comprends pas exactement ce que tu souhaites faire, mais il serait mieux de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Range("A1:J75").Select
            ActiveWindow.SmallScroll Down:=-105
            ActiveCell.FormulaR1C1 = "='Feuil' + i !R[66]C[2]"
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Range("A1:J75").Formula = "='Feuil'" & i & "!B66"
    Idem pour le bloc suivant.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2015, 18h34
  2. imprimer feuille excel depuis access
    Par Jean Bonnisme dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2004, 08h46
  3. [VBA-E]Type d'une feuille excel
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2004, 14h43
  4. [VB6]PB d'importation d'un feuille Excel dans une MSFlexGrid
    Par mystere l dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 20/04/2004, 15h59
  5. remplir feuille excel
    Par thibaud60 dans le forum Access
    Réponses: 2
    Dernier message: 24/11/2003, 10h21

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