[VBA] - Aide sur programme
Etu13
-
Etu13 -
Etu13 -
Bonjour,
Etant novice, (j'ai découvert vba hier), je souhaiterai un peu d'aide, j'ai un fichier avec des alertes qui retourne une valeur, cette valeur doit être réutilisé ensuite pour afficher dans un fichier excel les lignes correspondante, j'ai réalisé une "ébauche" de code,
Le probleme est que pour ce test je n'ouvre qu'un fichier mais a la finalité, une vingtaine vont s'ouvrir, avoir 20 classeurs qui s'ouvrent simultanément n'est pas super, peut on faire en sortes de ne pas les ouvrir mais de quand meme récupérer les données ?
, et si ce n'est pas possible, rajouter une commande qui les ferment mais qui laisse ouvert celui qui éxecute la macro
voici l' "ébauche":
Vous en remerciant par avance
Cordialement
Etu13
Etant novice, (j'ai découvert vba hier), je souhaiterai un peu d'aide, j'ai un fichier avec des alertes qui retourne une valeur, cette valeur doit être réutilisé ensuite pour afficher dans un fichier excel les lignes correspondante, j'ai réalisé une "ébauche" de code,
Le probleme est que pour ce test je n'ouvre qu'un fichier mais a la finalité, une vingtaine vont s'ouvrir, avoir 20 classeurs qui s'ouvrent simultanément n'est pas super, peut on faire en sortes de ne pas les ouvrir mais de quand meme récupérer les données ?
, et si ce n'est pas possible, rajouter une commande qui les ferment mais qui laisse ouvert celui qui éxecute la macro
voici l' "ébauche":
Private Sub Workbook_Open()
Dim i As Integer
Dim Y As Integer
Dim Reset As Integer
i = 2
Y = 3
Workbooks.Open ("PeseuseMBP_A_B.xls")
For Lig = 3 To 15
If Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Cells(Lig, "N") = "0" Then
'MsgBox ("Coucou")
Reset = Reset + 1
i = i + 1
Y = Y + 1
ElseIf Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Cells(Lig, "N") = "5" Then
'MsgBox ("Coucou2")
Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Range("A" & Y, "I" & Y).Copy Worksheets("Feuil1").Range("A" & i - Reset, "I" & i - Reset)
i = i + 1
Y = Y + 1
End If
Next Lig
i = 1
Y = 3
Reset = 0
End Sub
Vous en remerciant par avance
Cordialement
Etu13
A voir également:
- [VBA] - Aide sur programme
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Desinstaller un programme sur windows - Guide
1 réponse
J'ai trouvé la réponse,
Pour ceux que ca aiderais voici la solution que j'ai trouvé
@+
Pour ceux que ca aiderais voici la solution que j'ai trouvé
/*Execution automatique de la macro à l'ouverture du classeur*/
Private Sub Workbook_Open()
/* déclaration et mise a 2 et 3 des variables i et Y*/
Dim i As Integer
Dim Y As Integer
Dim Reset As Integer
i = 2
Y = 3
/*Ouverture du fichier*/
Workbooks.Open ("PeseuseMBP_A_B.xls")
/*Pour toute ligne de 3 à 1*/
For Lig = 3 To 15
/*Si dans le claseur peseusembpab la cellule de la colonne N variant de 3 à 15 est égale à 0*/
If Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Cells(Lig, "N") = "0" Then
/*Affiche Coucou*/
'MsgBox ("Coucou")
/* Incrémente la variable Reset, i et Y de 1 */
Reset = Reset + 1
i = i + 1
Y = Y + 1
ElseIf
/*Si dans le claseur peseusembpab la cellule de la colonne N variant de 3 à 15 est égale à 0*/
Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Cells(Lig, "N") = "5" Then
/*Affiche Coucou2*/
'MsgBox ("Coucou2")
Copy des cellules AY à IY, dans la Feuil1 sur la ligne Ai à Ii, ici le - Reset évite qu'il y es des lignes de vide
Workbooks("PeseuseMBP_A_B.xls").Worksheets("PeseuseMBP_A_B").Range("A" & Y, "I" & Y).Copy Worksheets("Feuil1").Range("A" & i - Reset, "I" & i - Reset)
/* Incrémente la variable i et Y de 1 */
i = i + 1
Y = Y + 1
/* Fermeture du If */
End If
/* Passe à la ligne suivante */
Next Lig
/* Sauvegarde et Fermeture des feuilles qui s'ouvrent autre que celle qui exécute la macro */
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
/* Mise aux valeurs départ de i, Y et Reset */
i = 1
Y = 3
Reset = 0
/* Fermeture de la fonction */
End Sub
@+