Aide VBA excel

Fermé
Julien - Modifié le 26 juin 2019 à 14:52
yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 - 27 juin 2019 à 17:42
Bonjour à tous, je vous contacte pour un renseignement sur le VBA.

J'ai réaliser une macro que vous trouverez ci-dessous mais je n'arrive pas à intégrer un sytème de bouclage (ou autre chose si c'est plus adapté)

Sub CopierForRTEvierge()
'
' CopierForRTEvierge Macro
'

'
    Sheets("Formalisme RTE Vierge").Select
    Sheets("Formalisme RTE Vierge").Copy After:=Sheets(9)
End Sub
Sub CopierpremiereValeur()
'
' CopierpremiereValeur Macro
'

'
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "='TABLEAU DE BORD'!R[10]C[22]"
    Range("H3").Select
End Sub
Sub onglet()
ActiveSheet.Name = Range("A1")
End Sub

Sub General()
Call CopierForRTEvierge
Call CopierpremiereValeur
Call onglet
End Sub




La macro permet dans un premier temps de copier un onglet, ensuite cette macro permet de copier une valeur définir par l'utilisateur, pour ensuite renommer cet onglet.

Et pour revenir à mon souci c’est le suivant :

Je n’arrive pas à intégrer un système de boucle dans mon VBA pour réaliser les étapes présente dans la macro (Copier onglet, intégration première valeur et renommage) par rapport à des données définis par l’utilisateur.
Pour résumé, l’utilisateur renseigne des données ( par exemple 51, 52 voir plus)
Et j’aimerais que ma macro intègre un bouclage (ou autre chose je n’m’y connais pas très bien) pour réaliser le système déjà présent dans ma macro suivant les choix de l’utilisateur.
Faire d’abord 51 puis 52 et si l’utilisateur à renseigner d’autre valeur (Ex : 53) continuer le calcul sinon on s’arrête.

Merci de ta réponse,
Cordialement
A voir également:

3 réponses

fabien25000 Messages postés 673 Date d'inscription mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
26 juin 2019 à 14:35
Bonjour,

L'idéal serait que tu mette un lien d'un classeur excel sans données confidentielles via mon-partage.fr (par exemple) avec un exemple concret de ce que tu attends et du genre de données renseignées par l'utilisateur (ou quand comment) à prendre en compte pour exécuter la routine selon tes besoin parce que là, ce n'est pas vraiment clair..

pour joindre ton fichier
1) Tu vas dans https://mon-partage.fr/
2) Tu cliques sur [Choisir un fichier] pour sélectionner ton fichier
3) Tu Clic sur [Uploader], un lien va s'afficher que tu copies
4) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".

yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
26 juin 2019 à 14:48
bonjour, merci d'utiliser les balises de code quand tu publies du code.
tu n'expliques pas quelle partie de ton code est variable.
tu n'expliques pas non plus où le VBA va trouver les données renseignées par l'utilisateur.
Bonjour à tous,

J'ai revu ma méthodologie pour bien expliquer le résultat souhaité.

Le fichier correspondant : https://mon-partage.fr/f/sTNBMSM9/

Voici la démarche que j’ai pensé :

I - Données définis par l’utilisateur : Dans l’exemple ci-joint « 51 » au « 56 » (Utilisateur renseigne ces données dans l’onglet « ParamètresImpression ».

(On retrouve les données ci-dessus (51 au 56) dans l’onglet « TABLEAU DE BORD » en colonne B)

1- Sélectionner l’onglet « ParamètresImpression »
2- Sélection cellule C3 (Garder en mémoire le numéro de ligne qui correspond ► Cellule E3)
3- Copier-coller l’onglet « Formalisme RTE Vierge »
4- Sélection Onglet « Formalisme RTE vierge » (celle copier)
5- Intégrer la valeur C3 dans la cellule H2 (Support gauche)
6- Ensuite passer à la ligne suivante (numéro de ligne 14 pour la donnée 52)
7- Récupérer la valeur 52 (Onglet « TABLEAU DE BORD » Colonne B) par rapport au numéro de ligne. (Je pense que pour récupérer la donnée 52 on peut faire « Numéro de ligne précédent +1, mais je m’y connais pas assez)
8- Copier-coller l’onglet Formalisme RTE Vierge
9- Intégrer la valeur 52 dans la cellule H2 de l’onglet précédemment copier (Support gauche)
10- Refaire le schéma de la partie qui varie (Etape 6 à 9) jusqu’à 56 pour ce cas, mais j’aimerais avoir la possibilité que cette donnée varie. (Mais cette donnée se trouve obligatoirement dans l’onglet « Tableau de bord » colonne B)
En tout cas je vous remercie grandement pour votre aide.

Bien cordialement,
yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
27 juin 2019 à 08:42
je pense que tu peux réaliser cela avec une variable contenant le numéro de ligne, une boucle "while", et, surtout, en évitant d'utiliser "select".
0
Salut yg_be,

J'ai pensé à ça, j'aimerais avoir ton avis :

Sub test

Dim numérodeligne As integrer

(Afficher onglet "ParamètresImpression")

numerodeligne = range (E3)


While numerodeligne <= range(E5)

Numerodeligne = numerodeligne +1

Wend

End Sub

Mais je sais pas si cela convient pour trouver la valeur renseigner par l'utilitaire puis l'intégrer dans une cellule.

Bien cordialement,

Julien
0
yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495
27 juin 2019 à 17:10
merci d'utiliser les balises de code quand tu publies du code. explications: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
peut-être ainsi:
Private Sub test()
Dim numerodeligne As Long, param As Worksheet, nouveau As Worksheet
Set param = ThisWorkbook.Sheets("ParamètresImpression")
numerodeligne = param.Cells(3, 5) 'E3
While numerodeligne <= param.Cells(5, 5) 'E5
    Call ThisWorkbook.Sheets("Formalisme RTE Vierge").Copy(, ThisWorkbook.Sheets(9))
    Set nouveau = ActiveSheet
    numerodeligne = numerodeligne + 1
Wend
End Sub
0
Merci beaucoup pour ton exemple, les balises de code dont tu parles ce sont les explications en vert ?

Cordialement,

Julien
0
yg_be Messages postés 22969 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 juillet 2024 1 495 > Julien
27 juin 2019 à 17:42
tu n'as pas lu les explications? c'est ce qui fait que le code est coloré et les lignes numérotées.
0