Flux rss
Communiquer en entreprise avec les outils Google
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Macro sous excel : besoin d'aide

caribou38, le samedi 12 juillet 2008 à 22:01:14
Bonjour,

Je souhaite réaliser une macro sous excel me permettant de récupérer
des donnees renseignées par des opérateurs dans une fiche de travail pour le recuperer et
remplir une feuille excel récapitulative de tous les bons de travaux créés par opés.
Problématique :
Les opé renseignent :

Une feuille avec nom de la machine a arrêter (choix dans une liste box /
ils peuvent en arreter 4 maxi par bon de travail).
Pour ? : Nom
Consigné le : date de consignation
Numero de bon : numero

Ces données doivent ensuite être recopiées a l'aide d'une macro dans une autre feuille excel ou se trouve toute les machines de l'usine dans une colonne
En face de chaque machine se trouve 4 colonnes a remplir : 4 colonnes avec les infos Pour ?, Numéro de bon,Consigné le, Heure (que l'ope vient de renseigner dans l'autre feuille).

LE but de la macro serait de recuperer les données : Pour ?, Numéro de bon,Consigné le, Heure et de les coller dans la ligne qui correspond a ou aux machines concernées.
Subtilitée : Il y a 7 groupes de 4 colonnes avec les infos : Pour ?, Numéro de bon,Consigné le, Heure .
LA macro doit aller coller les infos la ou les cellules sont vides.

J'ai eu comme probleme :
Coller des données a une position données qui depend de la recherche faite juste avant.
Rêcherche de cellule vide pour coller les données.

Pourriez vous m'aider ?
Mrci beaucoup




Répondre à caribou38  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
michel_m, le samedi 12 juillet 2008 à 23:27:33
bonsoir,

1/ tu peux trouver la ligne par une fonction "FIND"

par ex: liste dans colonne A

lig=columns(1).find(nomdelamachine,range("A65536")).row

2/ 1°colonne vide dans la ligne "lig"

col=cells(lig,100).end(xltoleft).column

mais il faut que tu t'assures que la saisie des 4 renseignements à reporter soit effective

Michel
Répondre à michel_m

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
michel_m, le dimanche 13 juillet 2008 à 08:40:58
Au lieu de:
col=cells(lig,100).end(xltoleft).column

Lire
col=cells(lig,100).end(xltoleft).column +1
Répondre à michel_m

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
caribou38, le dimanche 13 juillet 2008 à 12:53:18
Bonjour michel,

Merci beaucoup de ta reponse, je suis néanmoins encore bloqué :
J'ai mis ci joint le document sur lequel je travaille, la macro que j'ai commence est la macro2.

http://teamhosto.free.fr/fo1uw6aqey/Type_Consignations_elect­rique_S.xls

En fait je dois trouver la manière pour aller recopier les infos qui se trouvent dans la feuil3 en face des machines concernées.
Sachant que celle ci changent a chaque fois.
J'ai essayé de definir lig comme étant la ligne ou il doit se positionner apres avoir trouver le nom de la machine correspondante dans la colonne Q, mais lig reste toujours vide :-(( .

Une aide serait la bienvenue.

Merci d'avance,
Caribou38.
Répondre à caribou38

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
michel_m, le dimanche 13 juillet 2008 à 17:28:30
Salut Caribou

Ci joint proposition:
http://cjoint.com/?hnrnjFxgVN

Je n'ai travaillé que sur la zone PCR et viré le reste surtout question d'encombrement du fichier!

le gros problème est que tu utilises des cellules fusionnées. Si cette technique convient à des tableaux très simples, elle devient une tare dès que tu utilises des fonctions de recherche et une vraie calamité en VBA. En horizontal, il vaut mieux utiliser le centrage sur plusieurs colonnes (format-cellule-alignement) et éviter les fusions verticales...TU as des commentaires là dessus dans le code.

La saisie se fait sur une zone unique (toujours la même, coloriée en bleu) a l'appui sur le bouton, les saisies sont reportées en feuille "moteur" et également sur la fiche feuil3 afin de conserver par l'opérateur une mémoire des saisies
effectuées...

Bon courage pour le reste!...

Michel
Répondre à michel_m

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
caribou38, le dimanche 13 juillet 2008 à 18:29:34
Merci beaucoup pour le coup de main ...
J'ai finalement réussi a utiliser la fonction find sans défusionner les cellules et ca marche (cf code ci dessous)

'Selection et copie du nom de la machine N°1 dans la fiche de bon de travail
Sheets("Feuil3").Select
Range("B3").Select
nomdelamachine = Range("B3")

'Recherche de la ligne correspondant au nom de la premiere machine du BT
Sheets("liste moteur").Select
Range("Q4:Q65536").Select
ActiveSheet.Cells.Find(nomdelamachine, LookIn:=xlValues).Activate

'Ligne correspondant au nom de la machine
lig = ActiveCell.Row

'Trouver la premiere colonne vide en face du nom de la machine
col = Cells(lig, 100).End(xlToLeft).Column + 1

'Selection et copie des infos a mettre dans les 4 colonnes en face du nom de la machine
'Pour ?
Sheets("Feuil3").Select
Range("C3").Select
Selection.Copy
Sheets("Liste moteur").Select
Cells(lig, col).Select
ActiveSheet.Paste

La macro fonctionne, je vais m'inspirer de ton bouton de commande pour lancer la macro et effacer les données saisies a la fin....

En tout cas merci encore pour tes réponses rapides et très utiles.

Caribou38.
Répondre à caribou38

6


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
caribou38, le lundi 14 juillet 2008 à 22:37:50
Salut Michel

et merci encore pour l'aide que tu m'as fournie
je revient vers toi car j'ai encore besoin de ton aide je bloque complètement
ta macro me permet de remplir mon tableau excel .
la suite de mon programme était de remplir un bon de consignation (4 moteur max par numéro de bon) et un bon de déconsignation les enregistrer dans un répertoire pour les imprimer et vider mes bons pour une prochaine saisie
mais je n'arrive pas a recopier la selection des moteurs.

mais j'ai vu trop grand pour mes compétences (débutant en macro)
je joint mon fichier excel et te remercie d'avance pour l'aide que tu pourrais m'apporter.

http://vtsteam.free.fr/rfm0l53ycz/consigneselec.xls
Répondre à caribou38

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
michel_m, le mardi 15 juillet 2008 à 11:35:57
Bonjour,

Ci joint classeur
http://cjoint.com/?hplrzpmUtF

Tu seras sympa de m'envoyer un extrait de ton classeur et non les quelques 1,5 Mo de ta version complète.

J'ai modifié sub recuperer pour emp^cher une 5° consignation et donc déplacé le mémorandum à la fin de la macro

j'ai allégé sub numero; a toi de voir si ca te convient. Tu as intérêt à protéger ta feuille pour éviter toute saisie intempestive et commencer cette macro par la ligne (je ne l'ai pas écrite):
activesheet.unprotect
et à la fin
activesheet.protect

il faut donc dé-verrouiller les cellules "moteur" (B6?) et intervenant (C6?) (j"écris de mémoire)


Je n'ai pas compris ta demande:
la suite de mon programme était de remplir un bon de consignation (4 moteur max par numéro de bon) et un bon de dé-consignation les enregistrer dans un répertoire(?) pour les imprimer et vider mes bons pour une prochaine saisie
mais je n'arrive pas a recopier la selection des moteurs.


d'autre part, tu parles de dé-consignation mais où et comment fait- on la différence avec l'opération de consignation ?

a+
Michel
Répondre à michel_m

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
caribou38, le mardi 15 juillet 2008 à 20:19:02
bonjour

Merci encore pour toute l'aide que tu m'apportes ,milles excuses pour le fichiers volumineux je n'est pas fait attention hier soir
je me suis mal exprimé hier plutôt qu'un long discours je joint un échantillon de mon classeur excel j'ai annoté
les zone qui me pose problèmes.
Toutes tes suggestions sont les biens venues je suis novice en macro tu ne peut que me faire progresser.

merci beaucoup et encore une fois milles excuses pour le fichiers trop volumineux.
http://cjoint.com/?hpudvSJI8V

caribou38
Répondre à caribou38

9


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
caribou38, le vendredi 18 juillet 2008 à 16:56:00
bonjour

j'utilise cette macro pour rechercher une valeur dans un tableau et reporter la valeur de la cellule a coté dans une liste
que lorsque la macro sort du champ (A11,A16) elle envoie un message et ne plante pas comme elle fait actuellement
j'ai l'écran qui passe d'une feuille a l'autre pendant l'exécution de la macro comment l'éviter ou placer la commande

Application.ScreenUpdating = True

ou placer activesheet.protect et unprotect dans mes macro

merci de votre aide

With Sheets("bon consignation")


.Cells(28, 1) = tablo(1, 1)
.Cells(9, 2) = tablo(1, 2)
.Cells(5, 4) = Range("num_bon")
.Cells(7, 5) = tablo(1, 3)

Sheets("bon consignation").Activate
Range("A11:A16").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell = Cells(28, 1)
Range("A12").Select


'inscrit le local électrique dans le bon

With Sheets("bon consignation")
Columns("J:J").Select
Selection.Find(What:=Range("A28"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select

ActiveCell.Copy

Range("A12:A16").Select
Selection.Find(What:=Range("A28"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select

ActiveSheet.Paste


Columns("J:J").Select
Selection.Find(What:=Range("A28"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select

ActiveCell.Copy

Range("A12:A16").Select
Selection.Find(What:=Range("A28"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Select

ActiveSheet.Paste

Sheets("Liste moteur").Select
Selection.AutoFilter Field:=20, Criteria1:="1"

Sheets("feuille de saisie").Activate

End With

End With

End With
Répondre à caribou38

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 souris, le lundi 21 juillet 2008 à 20:04:13
Hello caribou,


Application.ScreenUpdating = False --> Au tout debut de la macro juste apres Sub recuperer ()
Application.ScreenUpdating = True -> A la fin de la macro juste avant End Sub

Pareil pour activesheet.unprotect --> Au debut
activesheet.protect --> A la fin ..

Pour le reste, il faudrait que tu charges la dernieres version excel de ta macro, ca sera plus simple pour reproduire le plantage.

Bon courage .
Répondre à souris
Macro excel envoi email avec piéce jointe (Résolu) Bonjour , je suis nouveau stagiaire . Ma question est comment faire pour creer une macro excel qui permet d'envoyer automatiquement un mail (via outlook) avec classeur excel joint. La macro doit ouvrir la feuille excel à mettre à jour (adr de la... www.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe
Macro Excel : Convertion des dates en texte (Résolu) Bonjour à tout le monde, Je voudrais convertir une colonne où il y a des dates (jj/mm/aaaa) en format texte dans une macro Excel. Quand je le fais directement sous Excel, il n'y a aucun problème, mais quand je veux la faire exécuter dans une... www.commentcamarche.net/forum/affich-2408261-macro-excel-convertion-des-dates-en-texte
[VBA] Ouvrir un PDF depuis une macro Excel. (Résolu) Bonjour. Je reçois quotidiennement un nombre important de fichiers en format Word et PDF que je dois imprimer dans un ordre précis. Cet ordre est contenu dans un fichier Excel. J'ai réussi, à partir d'une boucle dans une macro Excel à... www.commentcamarche.net/forum/affich-2793717-vba-ouvrir-un-pdf-depuis-une-macro-excel
Probleme boucle for macro excel (Résolu)bonjour à tous j'ai un souci pour une macro excel je dois faire une tache répétitive: recopier et coller 12 fois le contenu d'un tableau croisé dynamique sur chaque fois une feuille de calcul différentes j ai donc pensé à une boucle for mais... www.commentcamarche.net/forum/affich-3432897-probleme-boucle-for-macro-excel
Macro Excel recherche multiple (Résolu)Bonjour, J'aimerais écrire une macro excel qui me permettrait de vérifier si le contenu de ma cellule appartient à une liste de valeur prédéfinie ou est présente dans une plage d'autres cellules précise. Et si oui de faire telle ou telle... www.commentcamarche.net/forum/affich-3623448-macro-excel-recherche-multiple
Tri d'un fichier avec une macro excel (Résolu)Bonjour, Avec une macro Excel il est possible de créer un fichier. Mais est il possible de trier ce fichier ? D'avance Merci Lionel www.commentcamarche.net/forum/affich-2713738-tri-d-un-fichier-avec-une-macro-excel