Macro formule d'une autre feuille
Résolu/Fermé
lol59
-
14 mai 2012 à 17:03
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 15 mai 2012 à 13:20
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 15 mai 2012 à 13:20
A voir également:
- Macro formule d'une autre feuille
- Formule excel - Guide
- Formule si et - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Formule moyenne excel - Guide
6 réponses
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
Modifié par eriiic le 15/05/2012 à 11:41
Modifié par eriiic le 15/05/2012 à 11:41
Par curiosité, tu as quelle version d'excel ?
Le code est dans la feuille BD :
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
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
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
14 mai 2012 à 17:57
14 mai 2012 à 17:57
Je n'ai pas tout compris à ton problème désolé. Mais l'enregistreur de macro devrait très bien faire cela, essaie!
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
14 mai 2012 à 23:22
14 mai 2012 à 23:22
Bonsoir,
oublie ton code imbuvable (en plus tu renommes tes feuilles dans tous les sens) et décris exactement ce que tu veux.
eric
oublie ton code imbuvable (en plus tu renommes tes feuilles dans tous les sens) et décris exactement ce que tu veux.
eric
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 mai 2012 à 09:15
15 mai 2012 à 09:15
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 :
eric
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
Modifié par eriiic le 15/05/2012 à 10:09
Modifié par eriiic le 15/05/2012 à 10:09
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
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
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 mai 2012 à 10:39
15 mai 2012 à 10:39
Si tu veux, mais surtout explique CLAIREMENT le fonctionnement souhaité.
cjoint.com et coller ici le lien fourni
eric
cjoint.com et coller ici le lien fourni
eric
Tout fonctionne je te remercie Eric
Comment as tu acquis ces connaissances ?
Merci encore
Comment as tu acquis ces connaissances ?
Merci encore
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 mai 2012 à 13:11
15 mai 2012 à 13:11
en pratiquant, tout simplement
Je met en résolu pour toi...
eric
Je met en résolu pour toi...
eric
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 mai 2012 à 13:20
15 mai 2012 à 13:20
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.
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.