Problèmes code excel
Fermé
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
-
Modifié par nordoc le 16/02/2011 à 11:42
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 18 févr. 2011 à 10:41
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 18 févr. 2011 à 10:41
A voir également:
- Problèmes code excel
- Liste déroulante excel - Guide
- Le code ascii - Guide
- Code puk bloqué - Guide
- Word et excel gratuit - Guide
- Si et excel - Guide
6 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 18/02/2011 à 09:13
Modifié par lermite222 le 18/02/2011 à 09:13
Re,
Pour couper court...
Copie ce code dans l'événement Click du bouton.
Faut juste adapter les nouveaux noms de fichiers, le nom de la feuille et la/les plages à copier.
A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Pour couper court...
Copie ce code dans l'événement Click du bouton.
Private Sub CommandButton1_Click() Dim Lig As Long For Lig = 9 To 22 If UCase(Range("K" & Lig)) = "X" Then Workbooks.Open "C:\Documents and Settings\SML04891\Bureau\doc coor le mans\PTDM.xls" " ThisWorkbook.Sheets("Feuil1").Range(Cells(Lig, 1), Cells(Lig, 10)).Copy Range("A1") ActiveWorkbook.SaveCopyAs "C:\Documents and Settings\SML04891\Bureau\doc coor le mans\PTDM" & Lig & ".xls" ActiveWorkbook.Close End If Next Lig End Sub
Faut juste adapter les nouveaux noms de fichiers, le nom de la feuille et la/les plages à copier.
A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
16 févr. 2011 à 13:19
16 févr. 2011 à 13:19
Bonjour,
Dans le code du bouton tu dois mettre .. par exemple Call OuvreClasseur
Et le corp de ta macro tu dois le mettre dans un Module Public (Module1 par exemple)
Avec
A=
Dans le code du bouton tu dois mettre .. par exemple Call OuvreClasseur
Et le corp de ta macro tu dois le mettre dans un Module Public (Module1 par exemple)
Avec
Public Sub OuvreClasseur() 'Le code... End Sub
A=
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
Modifié par nordoc le 16/02/2011 à 14:20
Modifié par nordoc le 16/02/2011 à 14:20
Bonjour lermite, merci de te pencher sur mes problèmes ^^
je ne comprend pas tous ce que tu as marqué, dans quel ordre mettre tous ça, vu que apparement ça change pas mal la forme ce que tu me dis de faire
je ne comprend pas tous ce que tu as marqué, dans quel ordre mettre tous ça, vu que apparement ça change pas mal la forme ce que tu me dis de faire
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 16/02/2011 à 19:29
Modifié par lermite222 le 16/02/2011 à 19:29
Si je te suis bien..et une chose à la fois.
Dans la colonne K
Les lignes 9 à 22 contiennent des noms de classeurs ? si oui, le chemin est compris ?
Ensuite tu veux ouvrir les classeurs qui ont, dans la colonne ?? un X ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Dans la colonne K
Les lignes 9 à 22 contiennent des noms de classeurs ? si oui, le chemin est compris ?
Ensuite tu veux ouvrir les classeurs qui ont, dans la colonne ?? un X ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
Modifié par nordoc le 17/02/2011 à 08:44
Modifié par nordoc le 17/02/2011 à 08:44
Désolé pour le retard.
Non dans ma colone K il y a des X, c'est à dire que à chaque fois que la boucle passe sur une ligne et qu'elle trouve un X, un nouveau classeur s'ouvre (ptdm.xls), ce qui fonctionne très bien, car quand je met un msgbox, il me trouve bien le bon nombre de X sans problème.
Le souci est que lorqu'il m'ouvre ce nouveau classeur (ptdm.xls) celui-ci devient actif, et donc mon classeur initial non-actif donc la recherche ne s'effectue plus.
Ce que je souhaiterai c'est qu'il m'ouvre mon classeur met les informations dedans l'enregistre et le ferme et passe au suivant s'il y a encore des X.
J'espère que je me suis exprimé correctement :)
ps : désolé pour les fautes s'il y en a, je suis pas un as de l'orthographe
Non dans ma colone K il y a des X, c'est à dire que à chaque fois que la boucle passe sur une ligne et qu'elle trouve un X, un nouveau classeur s'ouvre (ptdm.xls), ce qui fonctionne très bien, car quand je met un msgbox, il me trouve bien le bon nombre de X sans problème.
Le souci est que lorqu'il m'ouvre ce nouveau classeur (ptdm.xls) celui-ci devient actif, et donc mon classeur initial non-actif donc la recherche ne s'effectue plus.
Ce que je souhaiterai c'est qu'il m'ouvre mon classeur met les informations dedans l'enregistre et le ferme et passe au suivant s'il y a encore des X.
J'espère que je me suis exprimé correctement :)
ps : désolé pour les fautes s'il y en a, je suis pas un as de l'orthographe
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
17 févr. 2011 à 09:42
17 févr. 2011 à 09:42
Salut nordoc, lermite222,
Excusez l'incruste...
La solution est donc dans la première réponse de lermite222. Ton code VBA est, pour l'instant dans le code de ta feuille excel. Il faut qu'il soit dans un module. Pour cela, ouvre ton classeur, ouvre Visual Basic (ALT+F11) et regarde dans la fenêtre "Projet - VBA Project" (en haut à gauche de l'écran). Tu y verras :
VBA Project (nom du classeur)
Microsoft Excel Objects
Feuil1(Feuil1)*
Feuil2(Feuil2)*
Feuil3(Feuil3)*
ThisWorkBook
[* les noms des feuilles indiqués ici ne sont pas forcément les mêmes que toi...]
Pour résoudre ton souci :
Sous visual Basic :
1- Insertion/Module
2- copie colle ceci dans la fenêtre de code :
3- remplace 'Le code... par le code de ton bouton
4- remplace le code de ton bouton par :
Excusez l'incruste...
La solution est donc dans la première réponse de lermite222. Ton code VBA est, pour l'instant dans le code de ta feuille excel. Il faut qu'il soit dans un module. Pour cela, ouvre ton classeur, ouvre Visual Basic (ALT+F11) et regarde dans la fenêtre "Projet - VBA Project" (en haut à gauche de l'écran). Tu y verras :
VBA Project (nom du classeur)
Microsoft Excel Objects
Feuil1(Feuil1)*
Feuil2(Feuil2)*
Feuil3(Feuil3)*
ThisWorkBook
[* les noms des feuilles indiqués ici ne sont pas forcément les mêmes que toi...]
Pour résoudre ton souci :
Sous visual Basic :
1- Insertion/Module
2- copie colle ceci dans la fenêtre de code :
Public Sub OuvreClasseur() 'Le code... End Sub
3- remplace 'Le code... par le code de ton bouton
4- remplace le code de ton bouton par :
Call OuvreClasseur
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
17 févr. 2011 à 12:39
17 févr. 2011 à 12:39
bonjour
j'ai fait ce que tu m'as dis mais ça me met objet manquant à la ligne :
nomFeuille = ComboBox1.Value ' recupère la valeur de la liste
je pense que du coup vu qu'il est dans le module il ne trouve plus ma combo ?
j'ai fait ce que tu m'as dis mais ça me met objet manquant à la ligne :
nomFeuille = ComboBox1.Value ' recupère la valeur de la liste
je pense que du coup vu qu'il est dans le module il ne trouve plus ma combo ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
Modifié par pijaku le 17/02/2011 à 12:49
Modifié par pijaku le 17/02/2011 à 12:49
nomFeuille = Sheets("Feuil1").ComboBox1.Value
remplace "Feuil1" par le nom de ta feuille bien entendu, entre ""
remplace "Feuil1" par le nom de ta feuille bien entendu, entre ""
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
18 févr. 2011 à 08:32
18 févr. 2011 à 08:32
je met le nom de la feuille ou ce situe mon bouton ou alors encore nomFeuille ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
17 févr. 2011 à 12:43
17 févr. 2011 à 12:43
Y a qu'ai chose qui me chiffonne..
Non dans ma colone K il y a des X, c'est à dire que à chaque fois que la boucle passe sur une ligne et qu'elle trouve un X, un nouveau classeur s'ouvre (ptdm.xls),
Tu ouvre chaque fois un nouveau classeur avec ce nom ???
Si oui, il écrase les autres.
Non dans ma colone K il y a des X, c'est à dire que à chaque fois que la boucle passe sur une ligne et qu'elle trouve un X, un nouveau classeur s'ouvre (ptdm.xls),
Tu ouvre chaque fois un nouveau classeur avec ce nom ???
Si oui, il écrase les autres.
nordoc
Messages postés
51
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
18 février 2011
17 févr. 2011 à 13:38
17 févr. 2011 à 13:38
en faite ce classeur ptdm.xls sert de modèle.
donc effectivement il l'ouvre à chaque fois, mais je souhaite qu'il l'ouvre, que les données de la liste ou ce trouvais le X aille dans les cellule que je désigne, l'enregistre sous un autre nom et le ferme.
Donc logiquement il existera toujours l'original (ptdm.xls) pour chaque ligne ou ce trouve un X
donc effectivement il l'ouvre à chaque fois, mais je souhaite qu'il l'ouvre, que les données de la liste ou ce trouvais le X aille dans les cellule que je désigne, l'enregistre sous un autre nom et le ferme.
Donc logiquement il existera toujours l'original (ptdm.xls) pour chaque ligne ou ce trouve un X
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
18 févr. 2011 à 10:41
18 févr. 2011 à 10:41
Rectificatif : à partir d'un UF ça va plus.. changer par..
(Merci à Eriiic !)
A+
Private Sub CommandButton1_Click() Dim Lig As Long, Wks As Worksheet Set Wks = ThisWorkbook.Sheets("Feuil1") For Lig = 9 To 22 If UCase(Wks.Range("K" & Lig)) = "X" Then Workbooks.Open "C:\Documents and Settings\SML04891\Bureau\doc coor le mans\PTDM.xls" ActiveSheet.Range("A1").Resize(1, 9) = Wks.Cells(Lig, 1).Resize(1, 9).Value ActiveWorkbook.SaveCopyAs "C:\Documents and Settings\SML04891\Bureau\doc coor le mans\PTDM" & Lig & ".xls" ActiveWorkbook.Close End If Next Lig End Sub
(Merci à Eriiic !)
A+
18 févr. 2011 à 10:36
A B C D E F G H I J K
1X X X
2 X
3 X
4X X X X
donc si dans K il y a une croix alors il m'ouvre le nombre de classeur (ptdm.xls) suivant le nombre de croix de A à G. ( A à G correspond de lundi à dimanche)
donc pour K1 il m'ouvre deux classeur car il y a 2 croix de A à G.
pour K4 il m'ouvre trois classeur car il y a 3 croix de A à G.
Par contre pour enregistrer et fermer pas de problème.
Désolé d'etre lourd, mais je ne peux pas transmettre mes fichiers car ils sont interne à la SNCF ce qui serai beaucoup plus simple pourtant.
Encore merci de votre aide quand même :)