Probleme de macros attachees a des boutons

DRILL

XLDnaute Occasionnel
Bonjour a tous,

Ci-joint un fichier contenant deux macros attachées a des boutons en feuille "Instruction & Macro"

Avant que je rattache ces macros aux boutons dans la feuille, ces macros fonctionnaient très bien.

Si quelqu'un peut me donner la raison du pourquoi elles ne passent plus, welcome.

Slts
DRILL
 

Pièces jointes

  • Testabceee.xls
    153 KB · Affichages: 57

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

Bonsoir DRILL,

Le problème était dû à la méthode de sélection des feuilles et au référencement des plages de cellules.

J'ai corrigé la macro Private Sub ReportUpdate_Click() et ça me semble fonctionner.

Tu remarqueras qu'au passage j'en ai profité pour simplifier grandement ta boucle de lecture de la colonne B:B. Il suffit en effet de balayer cette colonne et de lire la cellule adjacente en colonne C. Si cette cellule vaut 1 alors on valide une nouvelle ligne sinon rien : la boucle passe à la ligne suivante. De ce fait, la variable NouvLigne n'est plus utile, je l'ai passée en commentaire.

Je te laisse le soin de continuer sur la même idée dans la deuxième macro.

En te souhaitant une bonne soirée.

Cordialement.
 

Pièces jointes

  • Copie de Testabceee.xls
    211 KB · Affichages: 48

DRILL

XLDnaute Occasionnel
Re : Probleme de macros attachees a des boutons

Bonjour Papou-net,

Merci pour le referencement des feuilles, je vais corriger ca dans l'autre macro.

Question comment apres avoir renomer une feuille tu peux savoir si c'est la feuille1, 2, 3...

En revanche en ce qui concerne la boucle elle est necessaire.
Car les valeurs des colones D a AS dans la feuille "Past the copy of PR Report here" ne sont pas forcement identiques a celle de la feuille "Report Updated" (c'est une mise a jour) donc necessite d'etre recopiees sur les lignes correspondante.
La colonne B etant le numero de demande d'achat
La colonne C etant le numero de ligne d'item de la demande d'achat
Les colonnes suivantes sont des infos relative a chaque ligne d'item; cotation, commande, prix, livraison....
Le rapport etant extrait toutes les semaines les infos dans chaques lignes changent et l'on a en plus des nouvelles demandes d'achat qui apparaissent.
Cette macro permet de metre a jour, a partir de l'extraction du rapport, une feuille de suivi dans la quelle le site emeteur des demandes peut rajouter des commentaires non existant dans le rapport d'origine (les 3 dernieres colonnes)

Slts,
DRILL
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

Bonjour DRILL,

Au temps pour moi, je n'avais pas analysé ton code jusque dans ses moindres recoins. Ce n'est d'ailleurs pas toujours évident lorsqu'on en est l'auteur, alors à fortiori lorsqu'on ne l'est pas ! Tu as donc bien fait de conserver la boucle Do...Loop.

Pour répondre à ta question, je n'ai pas renommé les feuilles, j'ai simplement utilisé leur "codename" qui lui ne change pas si tu modifies le nom de la feuille. Et de plus, ça évite des erreurs de retranscription dans la macro. Ce codename est le nom écrit en premier dans le module Objets de la fenêtre de VBAProject, juste avant le nom de la feuille entre parenthèses.

En te souhaitant une bonne journée.

Cordialement.
 

DRILL

XLDnaute Occasionnel
Re : Probleme de macros attachees a des boutons

Papou-Net,

Encore une question.
Pour la deuxieme macro. Le soucie est le suivant. Au debut du code je cree une copy de la feuille "Report Updated"
Comment nomer cette nouvelle feuille dans le code vu que le numero du book change en fonction du nombre de fois ou j'ouvre un nouveau document sur excel?

Code:
Private Sub CommandButton1_Click()
Sheets("Report Updated").Select
    Sheets("Report Updated").Copy
    
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    
    Range("A1:J1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Purchase Requisition Details"
    
    Range("K1:R1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Quotation Details"
    
    Range("S1:AI1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Purchase Order Details"
    
    Range("AJ1:AS1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Purchasing Details"
    
    Range("AT1:AV1").Select
    Selection.Merge
    ActiveCell.FormulaR1C1 = "Rig Acknowledgment"
    
    Rows("1:1").Select
    Selection.RowHeight = 30
    Selection.Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With

    Range("A3").Select
End Sub

Slts
Drill
 

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

Bonsoir DRILL,

En modifiant ta macro comme dans l'exemple ci-dessous, tu n'as plus à t'occuper du nom du nouveau classeur :

Code:
Private Sub DispatchCopy_Click()
Dim wb As Workbook
    Sheets("Report Updated").Copy
    Set wb = ActiveWorkbook
    With wb.ActiveSheet
      .Range("A1").EntireRow.Insert
    
      .Range("A1") = "Purchase Requisition Details"
      .Range("A1:J1").Select
      Selection.Merge
    
      .Range("K1") = "Quotation Details"
      .Range("K1:R1").Select
      Selection.Merge
    
      .Range("S1") = "Purchase Order Details"
      .Range("S1:AI1").Select
      Selection.Merge
    
      .Range("AJ1") = "Purchasing Details"
      .Range("AJ1:AS1").Select
      Selection.Merge
    
      .Range("AT1") = "Rig Acknowledgment"
      .Range("AT1:AV1").Select
      Selection.Merge
    
      .Rows("1:1").Select
      Selection.RowHeight = 30
      Selection.Font.Bold = True
      With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
      End With
    .Range("A3").Select
    End With
End Sub
Espérant avoir cadré la réponse à la question.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

RE :

Autre version plus compacte du code précédent :

Code:
Private Sub DispatchCopy_Click()
Dim wb As Workbook
    Sheets("Report Updated").Copy
    Set wb = ActiveWorkbook
    With wb.ActiveSheet
      .Range("A1").EntireRow.Insert
    
      .Range("A1") = "Purchase Requisition Details"
      .Range("A1:J1").Merge
    
      .Range("K1") = "Quotation Details"
      .Range("K1:R1").Merge
    
      .Range("S1") = "Purchase Order Details"
      .Range("S1:AI1").Merge
    
      .Range("AJ1") = "Purchasing Details"
      .Range("AJ1:AS1").Merge
    
      .Range("AT1") = "Rig Acknowledgment"
      .Range("AT1:AV1").Merge
    
      .Rows("1:1").Select
      Selection.RowHeight = 30
      Selection.Font.Bold = True
      With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
      End With
    .Range("A3").Select
    End With
End Sub
Pour rappel : il est très souvent inutile de sélectionner des feuilles ou cellules pour y apporter des modifications. Cela permet d'augmenter la rapidité du code.

Cordialement.
 

DRILL

XLDnaute Occasionnel
Re : Probleme de macros attachees a des boutons

Papou-net,

J'avais bien pense a une solution de ce genre... mais mon niveau VBA est assez faible voir tres faible et je n'arrivais pas a materialiser cette premiere partie du code.
Code:
Dim wb As Workbook
    Sheets("Report Updated").Copy
    Set wb = ActiveWorkbook
    With wb.ActiveSheet

Encore un grand merci.
Slts
DRILL

ps: il ne faut jamais dire toutes ses pensees, de nos jours c'est un coup a finir en taule.
Le bon sens etant souvent materialise par des interdit.
 

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

Papou-net,

J'avais bien pense a une solution de ce genre... mais mon niveau VBA est assez faible voir tres faible et je n'arrivais pas a materialiser cette premiere partie du code.
Code:
Dim wb As Workbook
    Sheets("Report Updated").Copy
    Set wb = ActiveWorkbook
    With wb.ActiveSheet

Encore un grand merci.
Slts
DRILL

ps: il ne faut jamais dire toutes ses pensees, de nos jours c'est un coup a finir en taule.
Le bon sens etant souvent materialise par des interdit.

Bonjour DRILL,

J'ai oublié de te donner quelques explications concernant le problème :

Ta macro étant contenue dans ton fichier source, il faut absolument activer le nouveau classeur créé pour pouvoir y accéder. En l'absence de quoi, la macro continue d'agir sur son propre contenant. C'est le sens principal de la modification de ton code, le reste n'étant qu'une simplification en retirant des instructions non indispensables.

Cordialement.

PS : merci pour ton post-scriptum qui répond à mon interrogation journalière (oups, j'ai encore dit ce que je pensais !)
 

DRILL

XLDnaute Occasionnel
Re : Probleme de macros attachees a des boutons

Papou-net,

Bien note et enregistre dans mes tablettes.
J'avais essaye au depart de creer un new workbook, le nomer et copier dedans la feuille source.... ce qui correspond a faire Paris Marseille en passant par Frankfurt et a vrai dire je voyage dejas beaucoup trop a mon gout.

Encore Merci,
DRILL

ps: Ton interrogation journalière n'a de réponse que dans ta propre conscience.
Pour ma part je m'efforce de suivre le principe suivant.
Penser noir et dire blanc ou vice et versa ne constitue pas un mensonge. Dans certain cas l'on appel ca être diplomate.
L'exercice de diplomatie passant souvent par l'abnégation de son propre fort intérieur, je préfère refaire le monde avec un bucheron plutôt qu’un vendeur d’aspirateurs. Celui n’ayant rien à me vendre, si je pense blanc ou noir il le sera.
 

Papou-net

XLDnaute Barbatruc
Re : Probleme de macros attachees a des boutons

RE :

Tu as raison, penser une chose et dire le contraire n'est pas en soi un mensonge; c'est masquer la vérité qui en est un. Personne ne nous oblige à dire notre vérité intérieure, donc on se trouve bien là avec un cas de conscience qui nous appartient.

Après cet aparté philosophique, que je suis heureux de partager avec toi, je viens t'apporter une simplification supplémentaire de ton code en supprimant la sélection de la ligne 1 :

Code:
Private Sub DispatchCopy_Click()
Dim wb As Workbook
    Sheets("Report Updated").Copy
    Set wb = ActiveWorkbook
    With wb.ActiveSheet
      .Range("A1").EntireRow.Insert
   
      .Range("A1") = "Purchase Requisition Details"
      .Range("A1:J1").Merge
   
      .Range("K1") = "Quotation Details"
      .Range("K1:R1").Merge
   
      .Range("S1") = "Purchase Order Details"
      .Range("S1:AI1").Merge
   
      .Range("AJ1") = "Purchasing Details"
      .Range("AJ1:AS1").Merge
   
      .Range("AT1") = "Rig Acknowledgment"
      .Range("AT1:AV1").Merge
   
      With .Rows("1:1")
        .RowHeight = 30
        .Font.Bold = True
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
'        .WrapText = False
'        .Orientation = 0
'        .AddIndent = False
'        .IndentLevel = 0
'        .ShrinkToFit = False
'        .ReadingOrder = xlContext
      End With
      .Range("A3").Select
    End With
End Sub
Ca rejoint le conseil que je te donnais dans un précédent message : pas besoin de sélectionner pour appliquer une action.

D'autre part, je me pose une question : le classeur ainsi créé est-il temporaire et tu l'effaces ou bien tu le sauvegarde ? Car, dans les deux cas, il est possible de le faire par la macro.

En te souhaitant une bonne journée.

Cordialement.
 

DRILL

XLDnaute Occasionnel
Re : Probleme de macros attachees a des boutons

Bonjour Papou-Net,

Le nouveau classeur est cree une foi par semaine et doit etre sauve (save as), meme nom de classeur a chaque fois avec juste le numero de semaine qui change.
Je laisse le soin au utilisateurs finaux de faire la manipe a la mano car il doivent le sauver dans un fichier sur un serveur partage a bords... je n'en connais ni le lien ni l'emplacement et connaissant les artistes a bords... cela risque de changer souvent.

La phylosophie est toujour agreable, elle permet l'echange et facilite le dialogue entre sourd et muet.

Encore merci,
DRILL
 

Discussions similaires