Bonjour
Je suis débutant en vba , et j'ai un problème
S'il vous plaît je veux copier ma plage range(d1:n1) et la coller dans la dernière plage vide range (ai:ki) de ma feuille active.
Merci à tous !
Bonjour
Je suis débutant en vba , et j'ai un problème
S'il vous plaît je veux copier ma plage range(d1:n1) et la coller dans la dernière plage vide range (ai:ki) de ma feuille active.
Merci à tous !
salut,
essaye sa:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 worksheet("sheet(numero de ta sheet)").range(D1:N1).copy Do while activecell.value <> Empty activecell.offset(ici tu peux mettre la ligne, la colonne).select selection.paste Loop
tom
"Barbar : The rest of the warrior"
Into the wild....
Bonjour Mosta2010,
Je viens de répondre à votre message privé d'hier par une question, le nombre de colonnes semblant pouvoir être utilisées sur les 2 plages n'étant pas le même.
Mais je viens de voir que si l'on tient compte des colonnes vides dans la plage de destination (5 colonnes) et que l'on considère que sur la plage source entre les colonnes F et L il ne faut en prendre qu'une sur 2 alors oui, on obtient le bon compte. Mais il faut vraiment le deviner en voyant la structure du fichier.
Je modifie le code de votre précédent sujet en conséquence et je vous l'adresse.
Si mon raisonnement est valable sur ma réponse précédente essayez ce code, sinon précisez :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub Open_copy() ws = ThisWorkbook.Name mf = ActiveSheet.Name Set mfl = Workbooks(ws).Sheets(mf) mfich = Range("A1").Value nfeuil = Range("C1").Value mpath = "C:\Rep\Rep1" Workbooks.Open (mpath & mfich) Sheets(nfeuil).Select dl =Range("A" & Range("A:A").Rows.Count).End(xlUp).Row + 1 cdest = 1 For c = 4 To 14 d = mfl.Cells(1, c) Cells(dl, cdest) = d cdest = cdest + 2 c = c + 1 Next c End Sub
Re,
une petite modification à faire en ce qui concerne l'affectation de la date (pour que le jour ne soit pas mis à la place du mois et vice-versa si le jour est <= 12) insérer les 3 lignes en rouge entre les lignes en bleu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 cdest = 1 For c = 4 To 14 d = mfl.Cells(1, c) If c = 6 Then d = DateSerial(Right(d, 4), Mid(d, 4, 2), Left(d, 2)) End If Cells(dl, cdest) = d cdest = cdest + 2
Dernière modification par AlainTech ; 08/02/2008 à 07h04.
Suite à votre message privé pour enregistrer le fichier de destination en fin de traitement il suffit d'ajouter la ligne en rouge entre les 2 lignes en bleu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Next c Workbooks(mfich & ".xls").Close SaveChanges:=True End Sub
Bonjour Mosta2010,
Le fichier à l'origine se nommait E130-2007.xls
Ce nom fait supposer qu'il change chaque année ?
Celui que vous m'adressez maintenant se nomme "Decharges.xls" ?
Il faudrait me confirmer :
1) j'utilise le nom actuel ou le précédent ?
2) vous vous chargez de modifier quand nécessaire le nom dans le code ou vous voulez avoir une fenêtre qui s'affiche avec le choix du fichier à traiter ?
Amicalement.
Bonjour Mosta2010,
Le fichier E130-2007 que vous aviez joint à l'origine comprenait une ligne et en colonne "A" un nom de fichier et en "C" un nom de feuille.
Le fichier "DECHARGES" que vous m'avez adressé par message privé contient sur 17 lignes 6 noms de fichiers différents qui peuvent contenir chacun de 1 à 6 feuilles différentes.
En fait maintenant le problème n'est plus le nombre de fichiers ou de feuilles (ce ne sera qu'un temps de traitement correspondant) mais si vous m'aviez adressé ce fichier à l'origine on aurait gagné du temps (bien sûr on peut toujours se dire que j'aurais pu y penser, mais !!!).
Cela dit je n'abandonne pas mais il faut me laisser un peu de temps pour les modifications (il ne suffit pas de les écrire, il faut les tester) et même si je fais partie maintenant des inactifs, je ne travaille plus 10 heures par jour comme avant.
Compte tenu du fait que le mercredi je suis toujours absent jusqu'à 14 heures je pense pouvoir vous adresser les modifications demain dans la soirée (sauf imprévu).
Amicalement.
Bonsoir Mosta2010,
Ci-joint le fichier qui permet de copier toutes les lignes de celui-ci dans chaque fichier et feuille de destination.
Faites des essais et tenez-moi au courant.
http://s3.archive-host.com/membres/u...CHARGES_43.xls
Bonjour Mr JACQUES_JEAN,
Je vient de recevoir votre réponse et j'ai pas pu vous répondre car j'été très occupé par le travail,
JACQUES_JEAN, j'ai fait l'essaye toute et à marche maintenant toutes les lignes se distribuent vers leurs feuilles destinations, c'est magnifique et géniale, je vous remercier beaucoup.
J’ai une petite suggestion sur mon applications, s’il vous plait, j’ai répartie mes classeurs de destination dans plusieurs chemins et par année, câd si tu vois dans le tableur décharge_43
Tu trouve dans la colonne (A) les classeurs à ouvrir et dans la colonne (B) les date correspondants.
Exemple,
Pour ouvrir le classeur (22005259K) de la cellule (A1) votre code doit le chercher dans le chemin suivant N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2005 parce que la date correspondante appartient à l’année 2005 elle est le18/07/2005,
Et pour ouvrir le classeur (22003150T ) votre code doit le chercher dans le chemin suivant N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2006 parce que la date correspondante appartient à l’année 2006 il est 30/05/2006,
Et pour ouvrir le classeur (22004749F) votre code doit le chercher dans le chemin suivant N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2007 parce que la date correspondante appartient à l’année 2007 il est 08/08/2007 ....…. Etc…......
Ci-après les chemins que j’ai.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2000.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2001.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2002.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2003.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2004.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2005.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2006.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2007.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2008.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2009.
N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS 2010.
Je sait que c’est pas difficile pour vous Monsieur JACQUES_JEAN ,
S’il vous plait aidé moi.
Salutations
MOSTA2010
Bonjour Mosta2010,
Copiez ce code dans votre procédure (la ligne en bleu est une modification, les lignes en rouge sont des ajouts) et faites les essais.
Amicalement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Sub Bouton1_QuandClic() ws = ThisWorkbook.Name mf = ActiveSheet.Name dlsource = Range("A65536").End(xlUp).Row Set mfl = Workbooks(ws).Sheets(mf) mfich = Range("A1").Value mfeuil = Range("C1").Value mfichp = "" mfeuilp = "" mpath1 = "N:\Transite\Amor\Situation A.Temporaire\Fiches Admission Temporaire\Documenti\AT EN COURS " For n = 1 To dlsource mfich = mfl.Cells(n, 1) datan = mfl.Cells(n, 2) mpath = mpath1 & Right(datan, 4) & "\" mfeuil = mfl.Cells(n, 3) If mfich <> mfichp Then If mfichp <> "" Then Workbooks(mfichp & ".xls").Close SaveChanges:=True End If Workbooks.Open (mpath & mfich) Sheets(mfeuil).Select dldest = Range("A65536").End(xlUp).Row + 1 ElseIf mfich = mfichp And mfeuil <> mfeuilp Then Sheets(mfeuil).Select dldest = Range("A65536").End(xlUp).Row + 1 Else dldest = dldest + 1 End If cdest = 1 For c = 4 To 14 d = mfl.Cells(n, c) If c = 6 Then d = DateSerial(Right(d, 4), Mid(d, 4, 2), Left(d, 2)) End If Cells(dldest, cdest) = d cdest = cdest + 2 c = c + 1 Next c mfichp = mfich mfeuilp = mfeuil Next n Workbooks(mfich & ".xls").Close SaveChanges:=True Set mfl = Nothing End Sub
Bonjour monsieur jacques_jean ;
En réponse de votre dernier message je vous informe que j’ai essayé le code, il est applicable merci beaucoup ; donc mon problème est résolu.
Je vous demande s’il vous plait de m’aidé pour gérer les alertes d’erreurs en cas ou votre programme n’arrive pas à identifier les classeurs, et les feuilles de destinations càd que le classeur de destination n’existe pas ou son nom est différent de nom de classeur de la base source (range (« Ai »)).
Ou la feuille de destination n’existe pas ou son nom est différent de nom de la feuille de la base source (range (« ci »)).
1) Pour les classeurs de destination:
Monsieur jacques_jean ; pour ce cas je veux q’un message personnel s’affiche et contient les élément suivants :
1)*** Entête message : « gestion des fiches de décharge ».
2)*** Message : « Attention la fiche de décharge n° » + « nom de classeur (range (« Ai »)). » est introuvable.
- Exemple(1) : « Attention la fiche de décharge n° 22005259k est introuvable ».
- Exemple(2): « Attention la fiche de décharge n° 22010406E est introuvable ».
3)*** un seule bouton : ok
Si je clique sur ce bouton ok (la procédure) ou l’opération de transfert des données doit se continuer. Pour les lignes ou il n’y a pas le problème. Et pour les lignes de notre deux exemples ou de notre cas ne doivent pas être traitées.
2) Pour les feuilles de destination :
Monsieur jacques_jean ; pour ce cas je veux un message personnel s’affiche et contient les élément suivants :
1) *** Entête message : « GESTION DES ARTICLES EN AT».
2) *** Message : « Attention l’article « nom de la feuille de destination » (range (« ci »)) » n’existe pas dans la fiche « nom de classeur (range (« Ai »)). », voulez vous le créer ou la corriger ?
- Exemple(1) : « Attention l’article ANNEAUX EN ARGENT n’existe pas dans la fiche 22005259k , voulez vous le créer ou le corriger ?
- Exemple(2) : « Attention l’article BOULES EN LAITON n’existe pas dans la fiche 22010406E , voulez vous le créer ou la corriger ?
3)*** deus boutons : OUI et NON :
- Si je clique sur Oui un input box doit s’afficher :
1) Entête : « correction nom article»
2) message à l’intérieur de l’input box : « merci de saisir le nom exact de l’article. »
3) Message Par Défaut : « article »
4) deux Boutons Ok & Annuler:
*** Si je clique sur Ok le nom de la feuille doit se corriger après la saisie de ce nom dans l’input box. Et évidement la procédure doit se continuer à traiter les lignes a partie de la ligne ou elle a arrêtée câd a partir de la ligne ou le problème est corrigé.
*** si je clique sur Annuler un msgbox doit s’afficher en me disant « êtes-vous sur de vouloir Annuler la correction ? » si je clique sur oui l’opération de transfert des données doit se continuer. Par traiter les lignes où il n’y a pas le problème. Et si je clique non je revient a l’input box précité.
- Si je clique sur Non :
(La procédure) ou l’opération de transfert des données doit se continuer. Par traiter les lignes où il n’y a pas le problème. Sans traiter la ligne ou il y a le problème.
Merci de m’aider Monsieur jacques_jean.
A VOTRE DISPOSITION .
Salutations
Mosta2010
donc mois je vais séléctionner la 2ème cas,que tu as proposé cad j'ai un autre moyen ( je vais ouvrir un neauvou classeur excel et je vais ouvrir en lecture seule le classeur ou il ya le problème manuellement ,en suite, je copié le nom de la feuille et je le coller dans son cellule (ci) dans le fichier source decharge.xls
merci de me dire est ce que ca est faisable.
et j'attendrais votre code pour l'essaye
et merci beaucoup pour votre soutient
MOSTA2010
Bonjour Mosta2010,
Voila ce que je vous propose (et que je suis en train de faire).
Sur le fichier DECHARGES j'ai ajouté une feuille "Modele" qui correspond aux feuilles présentes dans vos autres fichiers à traiter.
Lorsque vous choisirez "Créer la feuille" celle-ci sera incorporée dans le fichier de destination.
J'ai supprimé les données en en-tête dans cette feuille et je n'ai laissé que les formules (il faudra bien sûr que vous complétiez ensuite).
En ce qui concerne les 3 choix pour les feuilles manquantes, au lieu d'une Msgbox j'ai créé un formulaire qui comprendra les boutons correspondants à ces choix :
1) Créer la feuille
2) Modifier le nom de la feuille sur la ligne en cours dans le fichier DECHARGES
3) Passer à la ligne suivante sans traiter celle en cours
Si vous choisissez l'option 2 un Combobox s'affichera automatiquent en vous proposant le(s) noms(s) de la (des) feuille(s) présentent dans le fichier.
Quand vous choisissez l'un d'eux ce nom écrasera automatiquement le nom présent dans la ligne en cours.
J'espère que mon explication a été assez claire pour vous permettre de me dire si cela semble vous convenir.
Amicalement.
Bonjour Mosta2000,
J'ai voulu répondre à votre message privé mais je ne le peux pas car il faut que vous supprimiez d'anciens messages.
Vous avez atteint le maximum prévu.
Donc ma réponse :
J'ai regardé le fichier et je n'ai pas le problème.
J'approfondis demain, car je ne vois qu'un endroit où ça pourrait arriver mais je ne vois pas comment.
Je vous tiens au courant.
Amicalement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager