Aider un novice sur Pb de macro

P

Phil

Guest
Bonjours à tout le monde
Je galère dans les macros et les exemples ou réponses que je trouve ne correspondent pas ou je n'arrive pas à les adapter.
Je vous joints mon fichier qui est en cours avec ma macro pour une aide pédagogique me permettant d'avancer dans mon apprentissage.
Merci à vous.
 

Pièces jointes

  • macro_Phil.zip
    16.4 KB · Affichages: 14
M

Michel_M

Guest
Salut à tous, salut Phil

Ci joint un début de proposition (demain, il fera jour): tu as quelques lignes à saisir et pour l'impression par fournisseur, ce n'est pas compliqué mais ch... et long

A+
Michel qui va au dodo
 

Pièces jointes

  • phil_xld.zip
    20.7 KB · Affichages: 15
D

Denis

Guest
Bonjour Phil, Michel & le Forum
j'espere que la réponse à ta question n'était pas vitale car c'est un peu tard la réponse
ci-joint un fichier avec des macro dans le module 2 (j'y ai join quelques explications)
si tu as des problèmes repasse un message dans le même fil
Bon courage et @+ sur le forum
Denis
 

Pièces jointes

  • Phil.zip
    21.7 KB · Affichages: 19
  • Phil.zip
    21.7 KB · Affichages: 15
  • Phil.zip
    21.7 KB · Affichages: 16
P

Phil

Guest
Bonjour Michel, Denis & le forum
Je suis enchanté par votre prestation et je voudrais en connaitre autant.
Les commentaires sont d'une aide appréciable pour un bricolo de mon genre.
Les deux sont intéressantes à analyser.

Michel
une question : comment fais tu avec ponctuel pour effacer que certaines données comme je le désire?
le tableau descend toujours après macro mais je vais bien trouvé.

Denis
Le boulot est super
Les données ne s'efface pas mais avec l'exemple de Michel cela devrait le faire
L'impression je n'aurais pas penser créer un autre tableau je crois que j'aurais essayé un filtre sur la date puis un tri par fournisseur qui manque sur ta proposition.
Il existe des documents ou l'on trouve des macros renseignées pour justement aprendre une boucle ou autre. du concret quoi.
 
M

Michel_M

Guest
Salut Phil et Denis


Hier soir, endormi sans sommeil, j'ai fait une macro à la C…
Et j'aurais du écrire:

Sheets(3).Activate
' trouve la 1° ligne vide
lig = Columns(1).Find("", [A1], , , xlByRows).Row

' restitue les valeurs
Range(Cells([lig], 1), Cells([lig], 11)) = transfert
''retourne à la feuille dialogue et efface les données "ponctuelles"
Sheets(1).Activate


La méthode éxécutée par Denis est bonne, mais c'est une manie perso, quand je transfert plusieurs cellules d'une feuillet à une autre j'utilise un array;


Concernant la zone "ponctuel" ,elle est créée par une zone discontinue (clic sur les cellules en gardant la touche Ctrl enfoncée, base du maniement sous Windows sauf Word)

Tu as intérêt car ta feuille doit être PROTEGEE et seules les cellules de saisie doivent être dévérouillées ! Tant que toi ou l'utilisateur n'auras pas détruit LA formule de 3 lignes réalisée en 4 heures et crises de nerfs, et c'est celle là qui sera détruite, tu continueras sans protection.

C'est un peu pareil que Option Explicit en VBA (que j'oublie souvent, 1 de ces 4 je comprendrais mon malheur°

Enfin pour apprendre VBA, tu as les sites internet: celui-ci et mon préféré info-3000.com

Apparemment le pb de l'imprimante semble résolu, donc

A+
Michel
 
P

Phil

Guest
Bonjour ou plutôt bonsoir Michel & Denis
Je crois que le bout du tunnel est pas loing

Le pb restant est que Denis a fait un code que je ne comprend pas bien pour d'après moi trouver les lignes correspondant à la dernière semaine et les imprimées.
Moi j'ai ajouté un tri sur les dates puis les fournisseurs
cela ne change rien je n'ais toujours pas seulement la derniere semaine d'imprimée.
le code:

Sub ListSemaine()

'Bloque l'écran
Application.ScreenUpdating = False

'retourne à la feuil2 (Tableau) et tri
Sheets("Tableau").Activate
Cells.Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A1").Select

'trouve le n° de cette semaine
Réf = Format(Now, "DD/MM/YYYY")
reP = DateValue(Réf)
dtevar = CDate(reP)
d = Int(dtevar)
res = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)

'recherche les enregistrements depuis le lundi de cette semaine
Dim Plage As Range, Cell As Range, i As Integer
i = 2
Set Plage = Sheets("Tableau").Range("A2:A" & Sheets("Tableau").Range("A65536").End(xlUp).Row)
For Each Cell In Plage
If Cell.Value >= res Then 'pour avoir la semaine précédente mettre >=res-7
Range("Imprime!A" & i) = Cell.Value
Range("Imprime!B" & i) = Cell.Offset(0, 1).Value
Range("Imprime!C" & i) = Cell.Offset(0, 3).Value
Range("Imprime!D" & i) = Cell.Offset(0, 10).Value

i = i + 1
End If
Next Cell

'sélectionne la feuille Imprime (faire la mise en page!)
Worksheets("Imprime").Select

'affiche la boite de dialogue Excel d'imprimante
Réponse = Application.Dialogs(xlDialogPrint).Show

'efface le tableau dans Imprime
Range("A2:D" & i).ClearContents

'reslectionne la feuille Dialogue
Worksheets("Dialogue").Select
End Sub
 

Pièces jointes

  • Phil_v1.zip
    23.9 KB · Affichages: 16
  • Phil_v1.zip
    23.9 KB · Affichages: 15
  • Phil_v1.zip
    23.9 KB · Affichages: 14
D

Denis

Guest
Bonjour Phil et le Forum
j'ai du faire comme Michel, endormi sans sommeil, mais moi c'est au bureau
ci-joint le fichier, il y avait une petite erreur quand au n) de semaine
j'ai tout essayé, ca marche
Bon courage et @+sur le forum
Denis
 

Pièces jointes

  • Phil.zip
    47.8 KB · Affichages: 13
  • Phil.zip
    47.8 KB · Affichages: 14
  • Phil.zip
    47.8 KB · Affichages: 16
P

Phil

Guest
Bonjour Denis et le forum
Je te remercie de ton aide et surtout le curseur pour la semaine désirée génial.
Je vois que tu es en super forme le matin.
peut être sur un autre fil et encore merci.
Ce forum est quand même extra il déborde d'ingéniosité
A+
 

Discussions similaires

Réponses
26
Affichages
743