Mise en place d'un gestionnaire de Bon de Livraison et Bon de Commande

Bonjour Alex

je suis étonné que cela fonctionne pour la suppression des images car j'avais omis de te donner une ligne à mettre dans le code Nouvelle Page.

Voici le code que tu dois modifier :

Sub NOUVELLEPAGE()
' NOUVELLEPAGE Macro
' AJOUTE UNE PAGE IDENTIQUE EN BAS DE PAGE POUR CONTINUER LA SAISIE SUR UNE AUTRE PAGE
Dim lig As Integer
With Sheets("MACBC")
    .Unprotect
    lig = .Cells.Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 2
    .Rows("1:55").Copy .Range("A" & lig)
    lig = lig + 23
    .Range("C" & lig & ":C" & lig + 22).Clear
    .Range("I" & lig & ":I" & lig + 22).Clear
    .Pictures(.Pictures.Count).Name = "Image " & .Pictures.Count 'On nomme les images
    .PageSetup.PrintArea = "$A$1:$L$" & lig + 29
   .Range("K" & lig + 25).FormulaR1C1 = "=SUM(R[-25]C:R[-3]C,R[-53]C)"
    .Protect
End With
End Sub

Amicalement

Hello Dan,

Bah écoute, j'ai intégré le code EFFACEIMAGE, ça ne fonctionnait pas de suite, alors j'ai regardé le code. Après compréhension j'ai du renommer l'image (le logo) en "Image 1". puis le code a fonctionné de suite.

Je comprends ton étonnement car moi même je me suis posé la questions : quand le code génère une nouvelle page, il génère une nouvelle image qu'il nomme aussi "Image 1". Pourtant le code EFFACEIMAGE me supprime bien uniquement l'image ajoutée et uniquement celle ci !

Et encore une fois super pour ton dernier code suite à ma demande, il fonctionne à merveille, c'est juste génial.

Enfin, le projet se termine et tu y es pour beaucoup.

Je mets tout en place, forme et couleurs.

A très vite sur Excel-pratique ^^

Amicalement,

Alex.

Salut Dan,

Me voici de retour...

J'ai ajouté des images que j'utilise en tant que bouton :

Retour (image d'une flèche an arrière), enregistrement (image disquette), nouvelle saisie (image d'une poubelle), nouvelle page (image d'une page), aide (image d'un point d'interrogation).

Remarque : j'ai bien renommé les images de la façon suivante :

RETOUR

DISQUETTE

POUBELLE

PAGE

AIDE

Ces image sont sur la feuille active lors de l'appelle de la macro "EFFACEIMAGE" et j'ai donc essayé de modifier le code de la façon suivante :

Sub EFFACEIMAGE()
Dim img As Object
    For Each img In ActiveSheet.Pictures
        If img.Name <> "Image 1" Or "RETOUR" Or "DISQUETTE" Or "POUBELLE" Or "PAGE" Or "AIDE" Then img.Delete
    Next
End Sub

Mais le code ne fonctionne pas...

Arrives-tu à voir où j'ai pu faire une erreur dans ce code ? Car a chaque nouvelle saisie, tous mes boutons sont effacés !!!

Merci pour tes services.

Amicalement,

Alex.

j'ai aussi essayé :

Sub EFFACEIMAGE()
Dim img As Object
    For Each img In ActiveSheet.Pictures
        If img.Name <> "Image 1" Or img.Name <> "RETOUR" Or img.Name <> "DISQUETTE" Or img.Name <> "POUBELLE" Or img.Name <> "PAGE" Or img.Name <> "AIDE" Then img.Delete
    Next
End Sub

... Et ça ne marche pas non plus.

J'ai trouvé !!!!

Il suffit de changer les "Or" par "And"... et ça fonctionne.

A bientôt.

Bye.

Re,

Suite aux message précédent, j'ai continuer avec des images comme boutons.

Lorsque je click sur "nouvelle saisie" (Le bouton POUBELLE pour supprimer les données renseignées dans le formulaire) les images reste bien car j'ai bien modifié EFFACEIMAGE :

        If img.Name <> "Image 1" And img.Name <> "RETOUR" And img.Name <> "DISQUETTE" And img.Name <> "POUBELLE" And img.Name <> "PAGE" And img.Name <> "AIDE" Then img.Delete

Ça c'est OK.

En revanche, maintenant, quand je click sur ajout d'une nouvelle page cela m'ajoute aussi les boutons.

Saurais tu où je pourrais mettre une close comme quoi je ne veut pas qu'il recopie les boutons nommés RETOUR, DISQUETTE

, etc. ?

Voici le code.

Sub NOUVELLEPAGE()
' NOUVELLEPAGE Macro
' AJOUTE UNE PAGE IDENTIQUE EN BAS DE PAGE POUR CONTINUER LA SAISIE SUR UNE AUTRE PAGE
Dim lig As Integer
With Sheets("MACBC")
    .Unprotect
    lig = .Cells.Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 2
    .Rows("1:55").Copy .Range("A" & lig)
    lig = lig + 23
    .Range("C" & lig & ":C" & lig + 22).Clear
    .Range("I" & lig & ":I" & lig + 22).Clear
    .Pictures(.Pictures.Count).Name = "Image " & .Pictures.Count 'On nomme les images
    .PageSetup.PrintArea = "$A$1:$L$" & lig + 29
   .Range("K" & lig + 25).FormulaR1C1 = "=SUM(R[-25]C:R[-3]C,R[-53]C)"
    .Protect
End With
End Sub

Je pourrais laisser les boutons se faire "copier/coller" car normalement il seraient effacés avec "NOUVELLE SAISIE".

Mais le problème est que lors du "copie/Colle" des boutons (les images) ne sont pas renommées malgré le code au dessus...

  .Pictures(.Pictures.Count).Name = "Image " & .Pictures.Count 'On nomme les images

Les doublons portent le même nom que les originaux. De ce fait, "NOUVELLE SAISIE" ne les efface pas !

Sais tu pourquoi ?

Merci Dan,

Au plaisir de te lire.

Alex.

PS : je te joins un screen shoot au cas ou le problème de renommer les image soit du au positionnement.

en tete

Bonjour

Dans la sub Nouvelle_page, fais un essai en remplaçant cette ligne

.Rows("1:1").Copy .Range("A" & lig)

par

.Range("A1:L55").Copy .Range("A" & lig) 

Amicalement

Hello Dan,

Je viens de tester, ça fonctionne. On copie de la cellule A1 à L55, puis on colle.

Pb !!! sinon ce ne serait pas drôle, les cellules sont bien copiées mais la mise en forme à foutue le camps.

Toutes les lignes ont une hauteurs de 14,25. Du coup la feuille sort de la zone d'impression. (Ça ne le faisait pas avec le code précédent.)

Et sinon cette ligne :

 .Pictures(.Pictures.Count).Name = "Image " & .Pictures.Count 'On nomme les images

Je me demande sil elle n'est pas spécifique à une seule image (celle du logo, car elle est bien toujours renommée à la différence des autres). Auquel cas, crois-tu que je peux multiplier cette ligne de code par le nombre d'image ? Ou ça ne sert à rien...

Amicalement,

Alex

Re

Pb !!! sinon ce ne serait pas drôle, les cellules sont bien copiées mais la mise en forme à foutue le camps.

Toutes les lignes ont une hauteurs de 14,25. Du coup la feuille sort de la zone d'impression. (Ça ne le faisait pas avec le code précédent.)

Si cela faisait aussi avec le code précédent. Je viens de faire un test sur le fichier V3.1. Attention que le code ne gère pas le saut de page. Sinon la hauteur des lignes bonne chez moi

Pour les images, la ligne n'est pas spécifique. Le but est de nommer le logo avec un incrément. Les boutons ne sont pas considérés comme image. Maintenant si tu as ajouté des boutons Image, cela se complique pour le code

Bonjour Dan,

Alors je te mets en PJ un extrait du classeur pour que tu visualise comment ça se passe et le problème que j'ai :

Après ouverture, appuies sur nouvelle page, et regarde la mise en page.

Puis supprime, cette nouvelle page, la avec la corbeille.

Les images/boutons restes.

Si je comprends bien, une image utilisées en tant que bouton n'est plus une image img. pour excel ???

Je t'écris un autre message pour mettre en PJ, le même fichier mais avec :

.Range("A1:L55").Copy .Range("A" & lig) 

et regarde ce que devient la mise en page lors d'un ajout de page.

18v4-1-dan.xlsm (447.42 Ko)

voici le deuxième message avec la PJ et sa ligne modifiée.

Encore merci,

Amicalement,

Alex.

23v4-2-dan.xlsm (447.91 Ko)

Bonsoir

Pour résoudre ton problème de mise en page, il faut garder la ligne avec ROWS (donc oublie ce que je t'ai proposé ).

Ensuite, faire ceci sur chacune des icones à droite

  • clique droite sur une icone
  • choisis dans le menu l'option "Taille et Propriétés"
  • dans la fenêtre "format image", sélectionne l'option "Propriétés"
  • Clique sur la case à cocher "Ne pas déplacer ou dimensionner avec les cellules"

Répéter ces opérations sur les 4 icones suivantes

Amicalement

c'est super Dan, comme d'hab.

Je n'ai même pas pensé à ça, alors que je connais ce menu avec ses options.

Bref, encore merci.

Amicalement,

Alex.

Hello Dan,

Je reviens vers toi pour savoir si toi, tu as un élément de réponse sur un nouveau problème que je rencontre.

Pour ne pas t'embêter j'ai ouvert un nouveau topic... Mais je n'ai pas de réponse qui me permet de m'en sortir...

je te mets le liens ci-dessous.

https://forum.excel-pratique.com/viewtopic.php?f=2&t=103645&e=1&view=unread#unread

Merci encore à toi.

Amicalement,

Alex.

Hello Dan,

Alors j'ai simplifié mon problème :

L'objectif est d'obtenir une ligne de code pour cocher une case à cocher.

Je te joins une feuille toute simple pout tester.

14test-pour-dan.xlsx (13.58 Ko)

Merci encore Dan,

Amicalement,

Alex.

Hello Dan,

Encore moi et toujours le même projet en cours qui ne fait que se perfectionner de jours en jours.

Problématique : numéroter les pages...

le numéro de page "1/1" doit être dynamique à l'ajout d'une page depuis la macro "NOUVELLEPAGEBL".

sur la ligne 50 j'ai écrit :

Range G50 = "Page" non dynamique, ça ne bouge pas.

Range H50 = "1" dynamique, toujours 1 sur la première page.

Range I50 = "/" non dynamique, ça ne bouge pas.

Range J50 = "3" dynamique, le total de page.

Soit

Range G103 = "Page" non dynamique, ça ne bouge pas.

Range H103 = "2" dynamique, +1 à chaque ajout de page dès la deuxième page.

Range I103 = "/" non dynamique, ça ne bouge pas.

Range J103 = "3" dynamique, le total de page.

Range G156 = "Page" non dynamique, ça ne bouge pas.

Range H156 = "3" dynamique, +2 pour la troisième page.

Range I156 = "/" non dynamique, ça ne bouge pas.

Range J156 = "3" dynamique, le total de page.

Alors, du travail que tu as fournit sur ce projet il me semble qu'il faudrait utiliser ce genre de code :

.Range("K" & lig + 25).FormulaR1C1 = "=SUM(R[-25]C:R[-3]C,R[-53]C)"

Mais je ne sais pas l'interpréter...

Pour pouvoir l'utiliser, pourrais tu me le décortiquer et me l'expliquer stp ? Ou as tu une autre méthode ?

Merci encore,

au plaisir de te lire.

Alex,

PS : Je commence à extraire la feuille pour pouvoir te joindre un fichier test si tu en as besoin.

Bonjour Dan,

Voici le fichier comme convenu, mais sabré de toute part pour qu'il fasse < 300 Ko.

Pour le coups il fait 160 Ko mais malgré cela, je n'ai pu te le transmettre sur ce poste seulement en zip. Sans ça, il ne voulait pas le prendre.

Bref je te l'envoi.

Merci,

Alex.

Bonjour

Ton fichier en retour pour test

  • Modifications des codes Nouvellesaisie et nouvellepage
  • Ajout d'un nom "Pagetot" dans les formules prédéfinies
21v1-92-pour-dan.xlsm (159.11 Ko)

Amicalement

Hello Dan,

super, j'ai a peu près compris l'articulation du fonctionnement mais je ne comprends pas certaines lignes de codes ajoutée.

Voici comment j'ai fait :

  • j'ai recopié et placé, au bon endroits, les nouveaux les nouveaux codes ("NOUVELLESAISIE ; NOUVELLEPAGE")
  • j'ai ajouté, dans nouvelle formule gestionnaire de noms, "Pagetot" (valeur : 1 / référence : =1)

et le nombre de page tôt fonctionne : le .../1 déroule à l'ajout de page.

En revanche, sauf erreur de ma part, le premier chiffre ne fonctionne pas, il reste à 1.

Dans ce que je crois être logique, ne faudrait-il pas non plus créer une nouvelle formule "Page" ?

Car dans "NOUVELLESAISIE" cette référence apparait mais pas dans la base des gestionnaire de nom.

Merci pour le temps passé Dan,

Au plaisir de te lire.

Amicalement,

Alex.

Re

Ok. Je crois que je t'ai une autre version du fichier

Modifie comme ceci :

  • Code Sub NOUVELLESAISIEBL() --> Supprime cette ligne --> ThisWorkbook.Names.Add Name:="Page", RefersTo:=1
  • Code Sub NOUVELLEPAGEBL(), au début du code modifie la ligne --> numpage = .Range("H" & lig - 2) + 1

Dans le gestionnaire de noms, tu peux aussi supprimer le nom --> Page

Amicalement

Rechercher des sujets similaires à "mise place gestionnaire bon livraison commande"