Microsoft 365 Ajout de devis sur fichier Excel

darnal77

XLDnaute Nouveau
Bonjour,

je suis un jeu membre de votre forum et je vous remercie pour la précieuse aide que vous fournissez. Dans le cadre de mes fonctions je dois remplir quotidiennement un fichier Excel avec des devis, à ce jour je remplis manuellement ces informations et je dois avouer que c'est assez lourd comme manip, j'ai réfléchis à un peu soulagé ma peine en créant un petit tableau dans l'encadré jaune dans le gauche de la photo qui se trouve en pièce jointe, j'ai essayé de créer une macro qui reprends les infos de l'encadré jaune pour les coller proprement dans la ligne vide suivante dans notre exemple la ligne 549, puis le devis d'aprés ira dans la ligne 550 etc ...

A ce jour avec mon faible niveau de connaissance, je n'ai pas réussi à trouver ou créer une macro qui puisse répondre à mon attente, si certains peuvent me donner une piste ou une petite aide d'avance merci

Cdlt

Sans titre.jpg
 
Solution
Bonsoir Darnal77, Phil,

bienvenue sur le site XLD ! :)
* regarde ton nouveau cadre en A9:C15 ; attention : j'y ai fait beaucoup de modifications, qui ne se voient pas au premier abord ! 😁 😜

* note que c'est vide en A28:F28, et dessous aussi ; est-ce que les données que j'ai déjà saisies dans le cadre te plaisent ? oui ? tu en es sûr ? alors au choix : fais Ctrl e ou clique sur le bouton bleu. :) c'est ok pour la ligne 28 ; refais Ctrl e ...​

Phil69970

XLDnaute Barbatruc
@darnal77

vous avez besoin du fichier ? C'est ça ?
Bingo ;)

Avec le maximum d'info :
- Je prends les infos ou ?
- Comment je les mets dans ton fichier en cliquant sur un bouton par exemple ?
- Un exemple avant /après est un plus pour mieux comprendre ton besoin....
En résumé tout ce qui permet de comprendre ton problème est le bienvenu

Edit:
Quand on met un fichier à dispo il doit être le plus représentatif .
C'est quoi représentatif ?
- représentatif, même organisation des lignes et des colonnes, mêmes libellés, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ...
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables

*Éventuellement préciser l'ordre de grandeur des lignes à traiter, exemple mon fichier comporte 1 000 lignes ou bien 200 000 lignes ==> la méthodologie peut être différents.

Une demande claire donne très souvent une réponse rapide et qui correspond au mieux à la demande.

De plus si cela fonctionne sur le fichier que je fournis et pas sur le vrai fichier j'en conclu qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller.

@Phil69970
 
Dernière édition:

darnal77

XLDnaute Nouveau
En effet ça semble logique ;)

Je joins dans ce post le fichier Excel, donc les infos (N° Devis, STS etc ...) sont à saisir manuellement dans le rectangle en jaune, pour les renseigner dans les lignes, il faudra appuyer sur le bouton bleu, puis ainsi de suite les devis doivent se mettre dans les lignes suivantes 28,29 etc ....

J'espère que c'est un peu plus claire pour vous.

Cdlt

Darnal77
 

Pièces jointes

  • SUIVI DEVIS 2022.xlsm
    787 KB · Affichages: 17

Phil69970

XLDnaute Barbatruc
@darnal77

Ton fichier n'a aucune données !!!!🤔
Mets des données fictives et des exemples de ce que tu veux faire
On prends les données où et on les mets où ?
D'ou sorte tes donnés d'une autre feuille ? Ou est elle ?

N’oublie pas ce qui est évident pour toi qui "baigne" dans le fichier ne l'est pas pour nous qui le voyons pour la 1ere fois.
Il faut que l'on comprenne ta logique (qui n'est pas forcément la notre voir la bonne) de ce que tu veux faire.
Et si il y a des macro dans ton fichier laissent les et c'est mieux quand elles sont opérationnelles

@Phil69970
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Darnal77, Phil,

bienvenue sur le site XLD ! :)
* regarde ton nouveau cadre en A9:C15 ; attention : j'y ai fait beaucoup de modifications, qui ne se voient pas au premier abord ! 😁 😜

* note que c'est vide en A28:F28, et dessous aussi ; est-ce que les données que j'ai déjà saisies dans le cadre te plaisent ? oui ? tu en es sûr ? alors au choix : fais Ctrl e ou clique sur le bouton bleu. :) c'est ok pour la ligne 28 ; refais Ctrl e ; c'est ok pour la ligne 29 ; refais Ctrl e ; c'est ok pour la ligne 30 ; etc...​



code VBA de Module2 (18 lignes) :

VB:
Option Explicit

Sub CpyCadre()
  Dim lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 1).End(3).Row + 1
  If lig < 28 Then lig = 28
  With Cells(lig, 1)
    .Value = [B9]         'N° Devis
    .Offset(, 1) = [B10]  'STS
    .Offset(, 2) = [B11]  'DV Réalisé
    .Offset(, 3) = [B12]  'Technicien
    .Offset(, 4) = [B13]  'Client
    .Offset(, 5) = [B14]  'Objet
  End With
  'désélectionne le bouton bleu :
  ActiveCell.Select
End Sub

soan
 

Pièces jointes

  • SUIVI DEVIS 2022.xlsm
    788.7 KB · Affichages: 4

darnal77

XLDnaute Nouveau
Bonsoir Darnal77, Phil,

bienvenue sur le site XLD ! :)
* regarde ton nouveau cadre en A9:C15 ; attention : j'y ai fait beaucoup de modifications, qui ne se voient pas au premier abord ! 😁 😜

* note que c'est vide en A28:F28, et dessous aussi ; est-ce que les données que j'ai déjà saisies dans le cadre te plaisent ? oui ? tu en es sûr ? alors au choix : fais Ctrl e ou clique sur le bouton bleu. :) c'est ok pour la ligne 28 ; refais Ctrl e ; c'est ok pour la ligne 29 ; refais Ctrl e ; c'est ok pour la ligne 30 ; etc...​



code VBA de Module2 (18 lignes) :

VB:
Option Explicit

Sub CpyCadre()
  Dim lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 1).End(3).Row + 1
  If lig < 28 Then lig = 28
  With Cells(lig, 1)
    .Value = [B9]         'N° Devis
    .Offset(, 1) = [B10]  'STS
    .Offset(, 2) = [B11]  'DV Réalisé
    .Offset(, 3) = [B12]  'Technicien
    .Offset(, 4) = [B13]  'Client
    .Offset(, 5) = [B14]  'Objet
  End With
  'désélectionne le bouton bleu :
  ActiveCell.Select
End Sub

soan
Bonjour @soan

Dans un premier temps, merci tu as parfaitement cibler ma demande et ta réponse est PARFAITE c'est exactement ce dont j'avais besoin, il y'a une possibilité d'effacer les données une fois qu'elles sont copiers dans les lignes ?

PS : Comment tu as fais ? c'est juste une macro ? ou il y'a aussi une programmation ?

Cdlt

Darnal77
 

darnal77

XLDnaute Nouveau
Bonjour @darnal77 , Soan

Je te propose ce fichier

@merci de ton retour

@Phil69970
Bonjour @Phil69970

C'est exactement ce dont j'ai besoin ! encore une fois désolé tu as raison, ce qui est claire et logique dans ma tête ne l'ai peux être pas pour vous.

ta proposition est quasi parfaite, j'aimerais bien savoir comment tu as fais, c'est juste une macro ?

il est possible que les infos copier soit effacée du tableau ?

Cdlt Darnal77
 

Phil69970

XLDnaute Barbatruc
Bonjour @darnal77 et Soan

j'aimerais bien savoir comment tu as fais, c'est juste une macro ?
Oui c'est une macro
Dans cette version j'ai mis des commentaires dans la macro et j'ai rajouté l’effacement des données C9-C14

Si la solution te convient n’oublie pas de la valider
Merci de ton retour

@Phil69970
 

Pièces jointes

  • SUIVI DEVIS 2022 V2.xlsm
    877.3 KB · Affichages: 6

soan

XLDnaute Barbatruc
Inactif
Bonjour Darnal, Phil,

j'ai dû m'absenter presque toute la journée, et je viens de lire ton post #9.​

Dans un premier temps, merci, tu as parfaitement ciblé ma demande et ta réponse est PARFAITE, c'est exactement ce dont j'avais besoin.

merci pour ton retour ! 😊 pour le cadre, j'espère que tu as remarqué tout ceci :

* il y a plus de place pour écrire l'Objet, car il y a 2 lignes ; avant, sur une seule ligne, la place était beaucoup trop restreinte ! j'ai même été tenté de mettre 3 lignes, mais vu la largeur de la colonne F, et comme tu écris tout le texte en majuscules, je me suis dit que c'est mieux de laisser 2 lignes ; je veux dire qu'avec 3 lignes, le texte en majuscules n'aurait pas tenu en entier en F28 ou au dessous ; si jamais tu préfères quand même 3 lignes, je peux te faire une autre version. :) c'est pas seulement la présentation du cadre qu'il faudra changer : c'est aussi des instructions VBA.

* voici toutes les fusions que j'ai faites : B9:C9 ; B10:C10 ; B11:C11 ; B12:C12 ; B13:C13 ; B14:C15.​



il y'a une possibilité d'effacer les données une fois qu'elles sont copiées dans les lignes ?

oui, c'est fait dans la nouvelle version du fichier joint dans ce post.​



Comment tu as fait ? c'est juste une macro ? ou il y'a aussi une programmation ?

oui, c'est avec une macro ; cette macro est écrite en VBA, qui est le langage de programmation d'Excel ; plus exactement toutes les applications Office utilisent VBA, et VBA est le sigle de Visual Basic for Applications.

dans VBA, il y a une base commune à toutes les applications, qu'on peut appeler le « noyau » de VBA (en anglais : kernel) ; en plus de cette base commune, il y a des ajouts particuliers pour prendre en compte les spécificités de l'application ; exemples : avec Excel, il faut gérer les feuilles de calcul, les autres feuilles comme les feuilles graphiques, les cellules... ; avec Word, il faut gérer le texte, les paragraphes, les styles de police et les styles de paragraphe... ; avec PowerPoint, il faut gérer les présentations graphiques, les diapositives... ; avec Access, il faut gérer les tables de données, les requêtes, les formulaires, les états...​



nouveau code VBA de Module2 avec effacement
des données
du cadre après la copie (20 lignes) :

VB:
Option Explicit

Sub CpyCadre()
  Dim lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 1).End(3).Row + 1
  If lig < 28 Then lig = 28
  With Cells(lig, 1)
    .Value = [B9]         'N° Devis
    .Offset(, 1) = [B10]  'STS
    .Offset(, 2) = [B11]  'DV Réalisé
    .Offset(, 3) = [B12]  'Technicien
    .Offset(, 4) = [B13]  'Client
    .Offset(, 5) = [B14]  'Objet
  End With
  'efface les données initiales du cadre
  [B9:C15].ClearContents
  'désélectionne le bouton bleu :
  ActiveCell.Select
End Sub

soan
 

Pièces jointes

  • SUIVI DEVIS 2022.xlsm
    789.1 KB · Affichages: 8

darnal77

XLDnaute Nouveau
Bonjour Darnal, Phil,

j'ai dû m'absenter presque toute la journée, et je viens de lire ton post #9.​



merci pour ton retour ! 😊 pour le cadre, j'espère que tu as remarqué tout ceci :

* il y a plus de place pour écrire l'Objet, car il y a 2 lignes ; avant, sur une seule ligne, la place était beaucoup trop restreinte ! j'ai même été tenté de mettre 3 lignes, mais vu la largeur de la colonne F, et comme tu écris tout le texte en majuscules, je me suis dit que c'est mieux de laisser 2 lignes ; je veux dire qu'avec 3 lignes, le texte en majuscules n'aurait pas tenu en entier en F28 ou au dessous ; si jamais tu préfères quand même 3 lignes, je peux te faire une autre version. :) c'est pas seulement la présentation du cadre qu'il faudra changer : c'est aussi des instructions VBA.

* voici toutes les fusions que j'ai faites : B9:C9 ; B10:C10 ; B11:C11 ; B12:C12 ; B13:C13 ; B14:C15.​





oui, c'est fait dans la nouvelle version du fichier joint dans ce post.​





oui, c'est avec une macro ; cette macro est écrite en VBA, qui est le langage de programmation d'Excel ; plus exactement toutes les applications Office utilisent VBA, et VBA est le sigle de Visual Basic for Applications.

dans VBA, il y a une base commune à toutes les applications, qu'on peut appeler le « noyau » de VBA (en anglais : kernel) ; en plus de cette base commune, il y a des ajouts particuliers pour prendre en compte les spécificités de l'application ; exemples : avec Excel, il faut gérer les feuilles de calcul, les autres feuilles comme les feuilles graphiques, les cellules... ; avec Word, il faut gérer le texte, les paragraphes, les styles de police et les styles de paragraphe... ; avec PowerPoint, il faut gérer les présentations graphiques, les diapositives... ; avec Access, il faut gérer les tables de données, les requêtes, les formulaires, les états...​



nouveau code VBA de Module2 avec effacement
des données
du cadre après la copie (20 lignes) :

VB:
Option Explicit

Sub CpyCadre()
  Dim lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 1).End(3).Row + 1
  If lig < 28 Then lig = 28
  With Cells(lig, 1)
    .Value = [B9]         'N° Devis
    .Offset(, 1) = [B10]  'STS
    .Offset(, 2) = [B11]  'DV Réalisé
    .Offset(, 3) = [B12]  'Technicien
    .Offset(, 4) = [B13]  'Client
    .Offset(, 5) = [B14]  'Objet
  End With
  'efface les données initiales du cadre
  [B9:C15].ClearContents
  'désélectionne le bouton bleu :
  ActiveCell.Select
End Sub

soan
Bonsoir @soan

Que dire à part que c'est parfait ! je te remercie mille fois c'est exactement ce dont j'avais besoin, merci à tous, vous êtes super et ça se voit que vous êtes des passionnés

Trés bonne soirée

Cdlt Darnal77
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Darnal,

selon ton info en MP, j'ai ajouté une colonne A vide.

➯ nouveau fichier, avec nouveau code VBA. :)

(même utilisation que précédemment)



VB:
Option Explicit

Sub CpyCadre()
  Dim lig&: Application.ScreenUpdating = 0
  lig = Cells(Rows.Count, 2).End(3).Row + 1
  If lig < 28 Then lig = 28
  With Cells(lig, 2)
    .Value = [C9]         'N° Devis
    .Offset(, 1) = [C10]  'STS
    .Offset(, 2) = [C11]  'DV Réalisé
    .Offset(, 3) = [C12]  'Technicien
    .Offset(, 4) = [C13]  'Client
    .Offset(, 5) = [C14]  'Objet
  End With
  'efface les données initiales du cadre
  [C9:D15].ClearContents
  'désélectionne le bouton bleu :
  ActiveCell.Select
End Sub

soan
 

Pièces jointes

  • SUIVI DEVIS 2022.xlsm
    789.6 KB · Affichages: 7

Discussions similaires

Réponses
4
Affichages
406
Réponses
59
Affichages
5 K

Statistiques des forums

Discussions
315 080
Messages
2 116 020
Membres
112 637
dernier inscrit
pseudoinconnu