Macro formule d'une autre feuille

Résolu
lol59 -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Trouvant souvent des solutions sur ce site je tente ma chance

Je fais une macro qui consiste à copié une feuille la renommée et dans 2 cellules en modifiées le contenu

Dans ces cellules =

Cellule A4= autre feuille cellule A6

Comment faire pour passer à la cellule suivante à chaque fois ? je m'explique je lance la macro alors dans ma cellule A4 j'aimerai avoir = autre feuille cellule A7 et sa a chaque fois que je la lance

voici ce que j'ai fais pour le moment

Sheets("Feuil1").Select
Sheets("Feuil1").Copy After:=Sheets(2)
Range("A6").Select
ActiveCell.FormulaR1C1 = "=+BD!R[-2]C1+1"
Sheets("Feuil1").Select
ActiveSheet.Name = Sheets("Feuil1").Range("A6").Value
Sheets("Feuil1 (2)").Select
ActiveSheet.Name = "Feuil1"

Merci d'avance

6 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Par curiosité, tu as quelle version d'excel ?

    Le code est dans la feuille BD :
    Sub créerFeuilles() 
        Dim lig As Long, shBD As Worksheet, sh As Worksheet 
        Set shBD = Worksheets("BD") 
        For lig = 4 To [A65536].End(xlUp).Row 
            If Not existSheet(shBD.Cells(lig, 1)) Then 
                ' créer la feuille si elle n'existe pas 
                Sheets("Modèle").Copy After:=Sheets(Sheets.Count) 
                Set sh = ActiveSheet 
                ' renommer feuille 
                sh.Name = shBD.Cells(lig, 1).Value 
                ' inscription en dur 
                sh.[A6].Value = shBD.Cells(lig, 1).Value 
                ' incription d'une formule 
                sh.[F12].FormulaLocal = "=BD!H" & lig 
            End If 
        Next lig 
        shBD.Activate 
    End Sub 
    
    Function existSheet(nomFeuille As String) As Boolean 
        On Error Resume Next 
        existSheet = Sheets(nomFeuille).Index 
    End Function 
    

    Je n'ai mis qu'une seule formule en exemple, je te laisse compléter.
    J'ai supprimé les noms que tu avais créé.
    https://www.cjoint.com/?BEplNkmCyJg

    eric
    2
  2. linkcr15 Messages postés 423 Statut Membre 12
     
    Je n'ai pas tout compris à ton problème désolé. Mais l'enregistreur de macro devrait très bien faire cela, essaie!
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    oublie ton code imbuvable (en plus tu renommes tes feuilles dans tous les sens) et décris exactement ce que tu veux.
    eric
    0
  4. lol59
     
    Ce que j'essaye de faire j'ai une page BD avec environ 60 noms prénoms et d'autres infos en lançant la macro je veux qu'elle reprenne les infos et me créer la page suivante pour le moment j'ai réussi a créer une page et la renommée avec le nom de la personne ainsi que créer la page mais je n'arrive pas a automatisé les données.

    Je pense que mon problème ce trouve ici

    ActiveCell.FormulaR1C1 = "=+BD!R[-2]C1+1

    Car cela me met #valeur#

    Comment faire pour que la macro descende d'un cellule à chaque fois que je la lance
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Ok oublions de comprendre...
    il faut que tu utilises une variable (cpt par exemple) que tu incrémentes de 1 à chaque fois.
    Ta ligne deviendrait :
    cpt=cpt+1
    ActiveCell.FormulaR1C1 = "=+BD!R[-2]C1+cpt

    Si ça se passe dans une boucle tout va bien.
    Seulement si tu appelles ta macro à chaque ligne, cpt démarrera toujours à 0.
    Dans ce cas il faut la déclarer en dehors du module si tu veux qu'elle conserve sa valeur entre 2 appels.
    ex :
    Dim cpt As Long
    Sub test()
        cpt = cpt + 1
        MsgBox (cpt)
    End Sub


    eric
    0
    1. lol59
       
      Merci mais dis moi que veux tu dire part en dehors du module ?
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      il suffit de lire l'exemple.
      Le Dim est avant le Sub, pas à l'intérieur.

      Bien sûr à toi de prévoir sa remise à zéro quand c'est nécessaire...
      eric
      0
    3. lol59
       
      j'ai un peu de mal


      Dim cpt As Long
      Sub Macro1()
      '
      ' Macro1 Macro
      '

      '
      Sheets("Feuil1").Select
      Sheets("Feuil1").Copy After:=Sheets(2)
      Range("A6").Select
      cpt = cpt + 1
      MsgBox (cpt)
      ActiveCell.FormulaR1C1 = "=+BD!R[-2]C1+cpt"
      Sheets("Feuil1").Select
      ActiveSheet.Name = Sheets("Feuil1").Range("A6").Value
      Sheets("Feuil1 (2)").Select
      ActiveSheet.Name = "Feuil1"
      ActiveWindow.SmallScroll Down:=15

      Je peux t'envoyer mon fichier test si tu veux
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Si tu veux, mais surtout explique CLAIREMENT le fonctionnement souhaité.
      cjoint.com et coller ici le lien fourni
      eric
      0
    5. lol59
       
      Voici le lien

      http://cjoint.com/?BEpkPf18wHC

      Je pense que tu comprendras en voyant le fichier j'aimerai réussir à créer une page pour chaque personne la macro fonctionne pour le premier mais le deuxième non
      0
  7. lol59
     
    Tout fonctionne je te remercie Eric

    Comment as tu acquis ces connaissances ?

    Merci encore
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      en pratiquant, tout simplement
      Je met en résolu pour toi...
      eric
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      PS:
      conserve 1 colonne avec le n° du projet répété dedans.
      Ca te servira pour tes calculs avec un nombre de ligne variable.
      Ainsi tu pourras utiliser sommeprod() pour calculer l'avancement du projet.
      0