Virtual Basic pour Excel...
Aquhydro
Messages postés
200
Statut
Membre
-
Aquhydro Messages postés 200 Statut Membre -
Aquhydro Messages postés 200 Statut Membre -
Bonjour,
Si je pose cette question ici c'est que je pense que la solution est plus sous virtual basic que directement dans excel, si je me suis trompé de place je supprimerais la question et garderais uniquement celle posée sous bureautique, le fait est que j'ai vraiment besoin d'une réponse..
J'ai deux tableau actuellement sous excel:
1er: composé d'une liste de paramètres et permet de lancer une simulation à l'aide de macro et d'un fichier *.exe
2nd : une liste de simulations à effectuer dans le cadre de mon boulot
Or, je dois effectuer quelque chose comme 1500 simulations, donc j'aimerais automatiser cela. Pour cette raison, quelqu'un m'as aidé à créer une boucle qui me permet, a partir de x tableau comme le premier de faire x simulations à la suite de façon automatiques. Le problème est qu'a chaque fois je dois, à la main, copier coller le tableau, et changer les valeurs (soit en changeant manuellement, soit en changeant les liens entre les données, si j'utilise le second tableau.)
Ce que je cherche à faire, c'est à automatiser la création de page excel identique au tableau numéro 1, avec comme difference que les opérations entrées dans les cellules se reportent à chaque fois à une ligne differente de mon tableau numéro 2, un peu comme quand sur une même feuille on répète une opération par copie et qu'elle prend non plus en compte la ligne précédante, mais la ligne suivante.
Est ce possible, et si oui, comment?
Merci beaucoup de vos réponses,
Aquhydro.
Si je pose cette question ici c'est que je pense que la solution est plus sous virtual basic que directement dans excel, si je me suis trompé de place je supprimerais la question et garderais uniquement celle posée sous bureautique, le fait est que j'ai vraiment besoin d'une réponse..
J'ai deux tableau actuellement sous excel:
1er: composé d'une liste de paramètres et permet de lancer une simulation à l'aide de macro et d'un fichier *.exe
2nd : une liste de simulations à effectuer dans le cadre de mon boulot
Or, je dois effectuer quelque chose comme 1500 simulations, donc j'aimerais automatiser cela. Pour cette raison, quelqu'un m'as aidé à créer une boucle qui me permet, a partir de x tableau comme le premier de faire x simulations à la suite de façon automatiques. Le problème est qu'a chaque fois je dois, à la main, copier coller le tableau, et changer les valeurs (soit en changeant manuellement, soit en changeant les liens entre les données, si j'utilise le second tableau.)
Ce que je cherche à faire, c'est à automatiser la création de page excel identique au tableau numéro 1, avec comme difference que les opérations entrées dans les cellules se reportent à chaque fois à une ligne differente de mon tableau numéro 2, un peu comme quand sur une même feuille on répète une opération par copie et qu'elle prend non plus en compte la ligne précédante, mais la ligne suivante.
Est ce possible, et si oui, comment?
Merci beaucoup de vos réponses,
Aquhydro.
A voir également:
- Virtual Basic pour Excel...
- Liste déroulante excel - Guide
- Virtual dj - Télécharger - DJ & Karaoké
- Word et excel gratuit - Guide
- Microsoft 365 basic - Accueil - Microsoft Office
- Virtual clonedrive - Télécharger - Divers Utilitaires
4 réponses
J'aime bien ta confusion avec "Virtual Basic" au lieu de "Visual Basic"
Tout est faisable...
Quand tu dis "quelqu'un m'as aidé à créer une boucle" : soit tu demandes à faire des modifications d'un existant à ce quelqu'un, soit tu communiques un exemple pour modification en supprimant les données confidentielles...
https://www.cjoint.com/
Tout est faisable...
Quand tu dis "quelqu'un m'as aidé à créer une boucle" : soit tu demandes à faire des modifications d'un existant à ce quelqu'un, soit tu communiques un exemple pour modification en supprimant les données confidentielles...
https://www.cjoint.com/
Bha en fait c'est quasiment que des données confidentielles, donc c'est assez difficile.
Je n'ai pas besoin qu'on modifie la boucle crée, elle est très bien, je re-explique rapidement :
J'ai un premier tableau du type :
Paramètre 1 : 458 Paramètre 2: 0.5
Paramètre 3: 95 Paramètre 4: (paramètre2/paramètre1)*paramètre1
etc...
Donc ce tableau sert à entrer mes données pour mes simulations, mais je dois en faire 700.
Les données des 700 sont sur un autre tableau du type :
Experience: Paramètre 1 Paramètre 2 Paramètre 3
1 455 0.8 80
2 442 0.2 40
3 428 0.7 300
... .... ... ...
700 200 0.1 80
La boucle que l'on m'as fait sert à répéter pour chaque feuille de mon classe l'opération de lancement du logiciel de simulation, j'aurais donc maintenant besoin d'une boucle pour créer 700 pages identiques à la première, mais donc les données, que j'ai lié dans le premier tableau aux données du 2nd avec de genre de formules
=ARRONDI.SUP((((((E18*'C:Nometadress/[dudocument]Feuil1'!$J2)/F33))/2143)*1300);0)
Etc...
Et ce que j'aimerais c'est créer automatiquement des 700 pages et qu'a chaque fois, la formule passe à la ligne suivante type : $J2 pour la page 1, $J3 pour la page 2, $J4 pour la page 3, sauf qu'il faut que ça le fasse pour toutes les formules rattachée à des données de cette seconde feuille...
Je veux bien apprendre, mais peut etre pas immédiatement, en effet, je suis en stage et je n'ai plus que 2 semaine pour le finir, ça n'est pas un stage informatique, donc à l'heure actuelle je n'ai pas vraiment le loisir d'apprendre réellement... Mais je m'y mettrait par la suite de façon certaine vu que je me rend compte à quel point c'est nécessaire.
Pour ma confusion "visual" "Virtual", j'avoue, c'est une jolie coquille...
Merci de vos réponses,
Aquhydro.
Je n'ai pas besoin qu'on modifie la boucle crée, elle est très bien, je re-explique rapidement :
J'ai un premier tableau du type :
Paramètre 1 : 458 Paramètre 2: 0.5
Paramètre 3: 95 Paramètre 4: (paramètre2/paramètre1)*paramètre1
etc...
Donc ce tableau sert à entrer mes données pour mes simulations, mais je dois en faire 700.
Les données des 700 sont sur un autre tableau du type :
Experience: Paramètre 1 Paramètre 2 Paramètre 3
1 455 0.8 80
2 442 0.2 40
3 428 0.7 300
... .... ... ...
700 200 0.1 80
La boucle que l'on m'as fait sert à répéter pour chaque feuille de mon classe l'opération de lancement du logiciel de simulation, j'aurais donc maintenant besoin d'une boucle pour créer 700 pages identiques à la première, mais donc les données, que j'ai lié dans le premier tableau aux données du 2nd avec de genre de formules
=ARRONDI.SUP((((((E18*'C:Nometadress/[dudocument]Feuil1'!$J2)/F33))/2143)*1300);0)
Etc...
Et ce que j'aimerais c'est créer automatiquement des 700 pages et qu'a chaque fois, la formule passe à la ligne suivante type : $J2 pour la page 1, $J3 pour la page 2, $J4 pour la page 3, sauf qu'il faut que ça le fasse pour toutes les formules rattachée à des données de cette seconde feuille...
Je veux bien apprendre, mais peut etre pas immédiatement, en effet, je suis en stage et je n'ai plus que 2 semaine pour le finir, ça n'est pas un stage informatique, donc à l'heure actuelle je n'ai pas vraiment le loisir d'apprendre réellement... Mais je m'y mettrait par la suite de façon certaine vu que je me rend compte à quel point c'est nécessaire.
Pour ma confusion "visual" "Virtual", j'avoue, c'est une jolie coquille...
Merci de vos réponses,
Aquhydro.
Bon, vu qu'évidement je creuse le sujet pendant ce temps, j'ai trouvé une petite parade à mon problème, désormais je voudrais juste savoir comment changer dans ça :
Sub Donnée
'
' Runs the executable unfichier.exe, which is the
' A version of the software
' Macro written date by Author
'
'
Set Base = ActiveWorkbook
For n = 1 To Sheets.Count
Sheets(n).Select
MsgBox (Range("h24"))
workingdir = Range("h24")
ChDir (workingdir)
Range("J12:Q19").Select
Selection.Copy
Set newbook = Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
If Range("e13").Value > 0 Then
Range("b27").Select
Range(ActiveCell, ActiveCell.Offset(Range("e13").Value - 1, 7)).Select
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
End If
Range("B33:I33").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.SaveAs Filename:="fichierdedonnee.csv", FileFormat:= _
xlCSV
ActiveWorkbook.Close SaveChanges:=False
Base.Activate
Range("a1").Select
Shell ("logiciel.bat")
Next
End Sub
Pour qu'au lieu d'etre une boucle sur le nombre de pages, qui se lance en boucle, ce soit une boucle qui se lance 700 fois, puisque j'y ai intégré des copiers coller assez basique et un déplacement de ligne tout aussi basique, et que cela me suffit amplement...
A ce que j'en ai compris pour ma courte formation, ce qu'il faut que je touche c'est le "For n=1 To Sheets.Count
Sheets(n).select
MsgBox(Range("h24") -dont je n'ai pas besoin que je vais supprimer)
cela peut il suffire de changer par "For n=1 to 700"? Ou dois je insérer mes copiers collers pour que tout se produise en boucle dans l'ordre:
Copier coller des valeurs, décalages des lignes du tableau 2, lancement du logiciel, puis retour au copier coller des valeurs, décalage des lignes, etc...
Merci de vos réponses.
Aquhydro
Sub Donnée
'
' Runs the executable unfichier.exe, which is the
' A version of the software
' Macro written date by Author
'
'
Set Base = ActiveWorkbook
For n = 1 To Sheets.Count
Sheets(n).Select
MsgBox (Range("h24"))
workingdir = Range("h24")
ChDir (workingdir)
Range("J12:Q19").Select
Selection.Copy
Set newbook = Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
If Range("e13").Value > 0 Then
Range("b27").Select
Range(ActiveCell, ActiveCell.Offset(Range("e13").Value - 1, 7)).Select
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
Selection.End(xlDown).Offset(1, 0).Select
Base.Activate
End If
Range("B33:I33").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
newbook.Activate
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.SaveAs Filename:="fichierdedonnee.csv", FileFormat:= _
xlCSV
ActiveWorkbook.Close SaveChanges:=False
Base.Activate
Range("a1").Select
Shell ("logiciel.bat")
Next
End Sub
Pour qu'au lieu d'etre une boucle sur le nombre de pages, qui se lance en boucle, ce soit une boucle qui se lance 700 fois, puisque j'y ai intégré des copiers coller assez basique et un déplacement de ligne tout aussi basique, et que cela me suffit amplement...
A ce que j'en ai compris pour ma courte formation, ce qu'il faut que je touche c'est le "For n=1 To Sheets.Count
Sheets(n).select
MsgBox(Range("h24") -dont je n'ai pas besoin que je vais supprimer)
cela peut il suffire de changer par "For n=1 to 700"? Ou dois je insérer mes copiers collers pour que tout se produise en boucle dans l'ordre:
Copier coller des valeurs, décalages des lignes du tableau 2, lancement du logiciel, puis retour au copier coller des valeurs, décalage des lignes, etc...
Merci de vos réponses.
Aquhydro