insertion de ligne via un bouton VBA

TEMAGOULTFARID

XLDnaute Occasionnel
Bonjour, je voulais savoir si c’était faisable d’inséré des lignes automatiquement via un bouton VBA à la suite de la dernière ligne ajouter automatiquement ; Je m’explique : en prenant le modèle du fichier en copie. Si je clic sur le bouton 1, j’insère automatiquement l’ensemble des lignes en modèle, si j’appuie sur le bouton 2, j’insère automatiquement les lignes comme ceux en modèle du fichier en PJ et ainsi de suite. J’Espère que je me suis compris. Par avance, merci
 

Pièces jointes

  • Poste 1 (5) (3).xlsm
    500.6 KB · Affichages: 24

TEMAGOULTFARID

XLDnaute Occasionnel
bonsoir, et je vous remerci une nouvelle fois pour votre implication, j'en suis touché et surtout pour finir avec mon projet lié a ma profession , je vous met en pj le fichier avec les réponses a vos questions.un grand merci
 

Pièces jointes

  • Poste 1 (5) (3).xlsm
    508.4 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je me heurte à un petit souci.
Lorsque plusieurs zone auront été collées, il n'est guère possible de savoir quelle est la première ligne vide car on a aucun repère pour la calculer.

Question : Dans la feuille Ligne a copier, les cellules A11 et A16 seront elles toujours vides ?
Si oui, puis je y mettre un mot en blanc sur fond blanc ou gris sur fond gris donc invisible pour pouvoir mener les calculs.
Dans ce cas il me suffira de chercher dans la colonne A le dernier MotCelluleA11 ou Actions() ou MotCelluleA16 ou Conforme pour pouvoir me repérer.
 

TEMAGOULTFARID

XLDnaute Occasionnel
Bonjour , en réponse a vos questions, je vous joint le fichier avec des bulles informations si cela peux vous aidez.
Dans ce cas il me suffira de chercher dans la colonne A le dernier MotCelluleA11 ou Actions(OK pour moi) ou MotCelluleA16 ou Conforme(ok pour moi) pour pouvoir me repérer.
a votre disposition
merci beaucoup
 

Pièces jointes

  • Poste 1 (5) (3) (1).xlsm
    506.7 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je pense que vous n'avez pas compris.
J'aimerais qu'il y ait un mot en A11 ( par exemple juste un point) auquel on ne toucherais jamais.
De façon à avoir toujours :

Dans ce cas il me suffira de chercher "." pour A11, "Action(s)" pour A13, "Point sécuritaire" pour A14" et "Conforme" pour A15.

Ou vous m'autorisez à mettre un mot comme "Fin Tableau" à la fin du tableau en feuille modèle. Ce qui est une autre façon de repérer la fin du tableau. Ce serait d'ailleurs beaucoup plus simple pour repérer la dernière ligne.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Bonjour,
Désolé, je sèche. Je rencontre trop de problème avec votre fichier comme plein de cases à cocher les unes sur les autres, trop de cellules fusionnées.
Et il y a moult interactions avec vos modules. Chaque action que je tente rentre en conflit avec un de vos modules. Je suis perdu.

J'espère que quelqu'un du forum pourra vous aider car là, ça me dépasse. Réellement désolé.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai horreur de rester sur un échec, alors un essai en PJ.
1- J'ai supprimer les boutons en useform et remplacer par des shapes appelant tous la même macros.
2- J'ai nettoyer toutes les cases à option qui étaient cachées.
3- J'ai mis Private Sub Workbook_Open() en commentaires. Je n'ai pas trouvé la feuille Résultat
4- J'ai modifié :
Code:
'### Apis ###
Declare PtrSafe Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" ( _
  ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long)
 
Private Declare PtrSafe Function GetWindowLong& Lib "user32" Alias "GetWindowLongA" ( _
  ByVal Hwnd As Long, ByVal nIndex As Long)
 
Declare PtrSafe Function SetWindowPos& Lib "user32" ( _
  ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _
  ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
 
Declare PtrSafe Function GetWindowRect& Lib "user32" (ByVal Hwnd As Long, lpRect As structRECT)
par
VB:
'### Apis ###
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" ( _
ByVal hwnd As Long, ByRef lpRect As Rect) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Votre code me poser problème. Surement à cause dy system Win10 64bits et XL2007.
Remettez le votre si ça pose problème.

Mes excuses pour mon mouvement d'humeur. Mais votre fichier condense plein de mauvaises choses comme ce maudit calendrier qui apparaît tout le temps , ces cellules fusionnées ...

Bref j'espère que cette PJ vous permettra d'avancer.
 

Pièces jointes

  • Poste 1 (V5)).xlsm
    358.6 KB · Affichages: 3

TEMAGOULTFARID

XLDnaute Occasionnel
bonjour Sylvanu , en réponse a vos deux derniers posts
J'espère que quelqu'un du forum pourra vous aider car là, ça me dépasse. Réellement désolé.
Vous n'avez pas a être désolé, c'est moi qui vous présente mes plus plates excuses pour le temps que je vous prends .

Mes excuses pour mon mouvement d'humeur. Mais votre fichier condense plein de mauvaises choses comme ce maudit calendrier qui apparaît tout le temps , ces cellules fusionnées ...
vous n'avez pas a vous excusé , c'est moi qui vous les présentes et je suis désolé que le calendrier.

J'ai horreur de rester sur un échec, alors un essai en PJ.
je reconnais un(e) accro et, j'admire cette posture positive.

concernant le fichier que vous m'avez fait parvenir et après plusieurs essais, cela fonctionne très bien et j'en suis impressionné,concernant l'action sur le bouton 4 qui copie la mauvaise ligne , j'ai bien regarder mais je ne vois pas , c'est le seul point noir.est ce que vous pouvez voir.
merci beaucoup
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
J'ai oublié de renommer le Bouton4 qui faisait comme le Bouton2.
C'est fait en PJ. Ca devrait marcher.
J'ai oublié de vous dire qu'il ne fallait jamais toucher à la chaine [Fin tableau] qui me permet de repérer la fin du tableau quelles que soient les zones qui ont été collées.
 

Pièces jointes

  • Poste 1 (V6).xlsm
    356.6 KB · Affichages: 4

TEMAGOULTFARID

XLDnaute Occasionnel
Bonjour Sylvanu , Cela fonctionne très bien et merci,Par contre , lorsque je récupère vos modules et les formules et que je mets le tout dans mon fichier source , cela fonctionne mais au ralentit , aurais-je oublié une manipulation .Serait-il possible de jeter un œil si cela ne vous dérange pas.je vous joint le fichier dans sa totalité (j'ai retiré des noms et logo seulement).
par avance, merci
 

Pièces jointes

  • Poste 1---.xlsm
    722.2 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Peux être une piste. Sur mon PC un appui sur Bouton1 passe de 1.05s à 0.28s en faisant :
VB:
Au début :
Sub Boutons()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

A la fin :
Application.ScreenUpdating = False
Application.Calculation = xlAutomatic
End Sub
penadnt les insertions de ligne on bloque les calculs et les raffraichissement formules.
 

TEMAGOULTFARID

XLDnaute Occasionnel
il suffisait de le demandé , un grand merci pour votre implication.Juste une question pour mon intellect, est-ce que cette macro peut fonction de la même manière sur d'autre macro ou uniquement sur cette macro.Sinon cela fonctionne très très bien , bonne soirée a vous.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Si vous parlez de cette dernière astuce, cela marche évidemment dans toute macro :
Application.ScreenUpdating = false Bloque le rafraîchissement de l'écran qui prend du temps
Application.Calculation = xlCalculationManual Bloque tous les calculs de cellules
Application.EnableEvents = False Bloque tous les events possibles ( souris, appel macros ... )

Pensez en sortant de la macro de les remettre correctement :
Application.ScreenUpdating = true
Application.Calculation = xlautomatic
Application.EnableEvents = true
 

Discussions similaires