Microsoft 365 VBA pour transformer une plage en tableau + Générer un tableau de synthèse

Merlin258413

XLDnaute Occasionnel
Bonjour
Je viens encore une fois solliciter votre aide.
Je désire automatiser une tâche en VBA.
Tous les mois je dois éditer l’état des FAR (factures à recevoir) et effectuer un contrôle.
Ce contrôle consiste a recalculer le montant de la FAR car il y a des bugs dans l’état généré.
Ces bugs sont transférés à ma DSI pour une correction manuelle.

Pour ce faire, je pars de mon onglet Base
  • Je renomme les cellules : je pense que c’est OK
    • U1 : Montant Cde
    • V1 : Montant Rec
    • W1 : Montant Facturé
    • X1 : Montant FAR
    • Y1 : FAR recalculée
    • Z1 : Ecarts
  • Je veux transformer ma sélection en tableau et nommer mon tableau Base : je ne sais faire
  • Je veux mettre mes colonnes U à Z au format nombre 2 chiffres après la virgule et séparateur de milliers : je pense que c’est OK
  • Je recopie vers le bas mon recalcul de FAR et d’écarts de FAR : je pense que c’est OK
  • Je voudrais maintenant mettre dans mon onglet synthèse toutes les lignes en écart, pour tous les écarts supérieur ou égale à 100 en valeur absolue (bref les écarts à 3 chiffres je me fiche des écarts à 10€ ou -10€) je ne sais faire
Pouvez-vous m'aider svp ? Je vous joins mon fichier avec les codes que j'ai pu faire.
En vous remerciant
Excellente soirée
 

Pièces jointes

  • Contrôle des FAR.xlsm
    361.5 KB · Affichages: 9
Solution
Re c'est très bien il y a juste un détail il reprend la couleur des lignes si tout peut être en blanc c'est ma solution


Regarde la pièce jointe 1184346
Sub TransTab()
Dim derlig&, i&, compteur&, Ecart
Dim wksBase As Worksheet, wksSynthese As Worksheet
Dim TabS As Range

compteur = 6
Set wksBase = ThisWorkbook.Worksheets("Base")
Set wksSynthese = ThisWorkbook.Worksheets("Synthèse")
derlig = wksBase.Cells(Rows.Count, 1).End(xlUp).Row
wksSynthese.Range("A5").CurrentRegion.Clear
wksBase.Range("C1:H1,K1,N1:Q1,S1:Z1").Copy Destination:=wksSynthese.Range("A5")
For i = 2 To derlig
Ecart = Abs(wksBase.Range("Z" & i).Value)
If Ecart >= 100 Then
wksBase.Range("C" & i & ":H" & i & ",K" & i...

Gégé-45550

XLDnaute Accro
Bonjour
Je viens encore une fois solliciter votre aide.
Je désire automatiser une tâche en VBA.
Tous les mois je dois éditer l’état des FAR (factures à recevoir) et effectuer un contrôle.
Ce contrôle consiste a recalculer le montant de la FAR car il y a des bugs dans l’état généré.
Ces bugs sont transférés à ma DSI pour une correction manuelle.

Pour ce faire, je pars de mon onglet Base
  • Je renomme les cellules : je pense que c’est OK
    • U1 : Montant Cde
    • V1 : Montant Rec
    • W1 : Montant Facturé
    • X1 : Montant FAR
    • Y1 : FAR recalculée
    • Z1 : Ecarts
  • Je veux transformer ma sélection en tableau et nommer mon tableau Base : je ne sais faire
  • Je veux mettre mes colonnes U à Z au format nombre 2 chiffres après la virgule et séparateur de milliers : je pense que c’est OK
  • Je recopie vers le bas mon recalcul de FAR et d’écarts de FAR : je pense que c’est OK
  • Je voudrais maintenant mettre dans mon onglet synthèse toutes les lignes en écart, pour tous les écarts supérieur ou égale à 100 en valeur absolue (bref les écarts à 3 chiffres je me fiche des écarts à 10€ ou -10€) je ne sais faire
Pouvez-vous m'aider svp ? Je vous joins mon fichier avec les codes que j'ai pu faire.
En vous remerciant
Excellente soirée
Bonsoir,
Si j'ai bien compris la demande.
Cordialement,
 

Pièces jointes

  • Contrôle des FAR.xlsm
    666.1 KB · Affichages: 6

Merlin258413

XLDnaute Occasionnel
Bonjour
Peux-tu envoyer le fichier non déjà travailler
Bonjour Voici le fichier de base non travaillé. Je l'ai juste renommé et enregistré format xlsm et renommer l'onglet base. Dans la feuille de synthèse, je désire retrouver les champs

Code agenceLibelle AgenceCode secteurNom secteurNo projetNo tacheType fournisseurFournisseurNo commandeMontant commandeDescription ligne commandeDate livraison ligneDate reception ligneMontant CdeMontant RecMontant FacturéMontant FARFAR recalculéeEcarts

le ficher par l'intermédiaire du N)commande fera une correction manuelle.

Je vous remercie et excellente journée
 

Pièces jointes

  • Contrôle de FAR.xlsm
    318.6 KB · Affichages: 3

Merlin258413

XLDnaute Occasionnel
Bonsoir,
Si j'ai bien compris la demande.
Cordialement,
Bonsoir, vous avez parfaitement compris et je vous remercie. Par contre c'est ma faute et je n'ai pas été assez précis.je veux soit une seule macro qui intègre aussi ma mise en forme soit un bouton qui lance les 2 traitements.
Concernant l'onglet de synthèse, j'aimerais voir apparaitre les champs ci-dessous
Code agenceLibelle AgenceCode secteurNom secteurNo projetNo tacheType fournisseurFournisseurNo commandeMontant commandeDescription ligne commandeDate livraison ligneDate reception ligneMontant CdeMontant RecMontant FacturéMontant FARFAR recalculéeEcarts

Encore merci et bonne journée
 

Gégé-45550

XLDnaute Accro
Bonsoir, vous avez parfaitement compris et je vous remercie. Par contre c'est ma faute et je n'ai pas été assez précis.je veux soit une seule macro qui intègre aussi ma mise en forme soit un bouton qui lance les 2 traitements.
Concernant l'onglet de synthèse, j'aimerais voir apparaitre les champs ci-dessous
Code agenceLibelle AgenceCode secteurNom secteurNo projetNo tacheType fournisseurFournisseurNo commandeMontant commandeDescription ligne commandeDate livraison ligneDate reception ligneMontant CdeMontant RecMontant FacturéMontant FARFAR recalculéeEcarts

Encore merci et bonne journée
Bonjour,
Cliquer sur le bouton dans l'onglet "Synthèse".
Cordialement,
 

Pièces jointes

  • Contrôle des FAR_1.xlsm
    666.3 KB · Affichages: 7

Merlin258413

XLDnaute Occasionnel
Bonjour,
Cliquer sur le bouton dans l'onglet "Synthèse".
Cordialement,
Bonjour c'est parfait par contre il y a moyen de conserver mes formats de cellules dans l'onglet synthèse
A savoir
Colonne L et M format date
Colonne J, et N à S format = "#,##0.00_ ;[Red]-#,##0.00 "
Colonne A et Cet E en standart ce sont des code agence et secteurs et projets
merci beaucoup
 
Dernière édition:

Gégé-45550

XLDnaute Accro
Bonjour c'est parfait par contre il y a moyen de conserver mes formats de cellules dans l'onglet synthèse
A savoir
Colonne L et M format date
Colonne J, et N à S format = "#,##0.00_ ;[Red]-#,##0.00 "
Colonne A et Cet E en standart ce sont des code agence et secteurs et projets
merci beaucoup
Re
dans Module1, remplacer la procédure TransTab() par celle-ci :
Sub TransTab()
Dim derlig&, i&, compteur&, Ecart
Dim wksBase As Worksheet, wksSynthese As Worksheet
Dim TabS As Range

compteur = 6
Set wksBase = ThisWorkbook.Worksheets("Base")
Set wksSynthese = ThisWorkbook.Worksheets("Synthèse")
derlig = wksBase.Cells(Rows.Count, 1).End(xlUp).Row
wksSynthese.Range("A5").CurrentRegion.Clear
wksBase.Range("C1:H1,K1,N1:Q1,S1:Z1").Copy Destination:=wksSynthese.Range("A5")
For i = 2 To derlig
Ecart = Abs(wksBase.Range("Z" & i).Value)
If Ecart >= 100 Then
wksBase.Range("C" & i & ":H" & i & ",K" & i & ",N" & i & ":Q" & i & ",S" & i & ":Z" & i).Copy
With wksSynthese.Range("A" & compteur)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Application.CutCopyMode = False
End With
compteur = compteur + 1
End If
Next
Set TabS = wksBase.Range("A1:Z" & derlig)
If Not TabS.ListObject Is Nothing Then
MsgBox "La plage A1:Z" & derlig & " est déjà constituée en tableau structuré nommé : " & TabS.ListObject.DisplayName, vbOKOnly
Exit Sub
Else
TabS.Parent.ListObjects.Add(xlSrcRange, TabS, , xlYes).Name = "Base"
End If
End Sub
Si le résultat vous convient, merci de cocher ce post comme solution en cliquant sur la coche verte dans le bandeau à droite ci-contre.
Cordialement,
 

Merlin258413

XLDnaute Occasionnel
Re
dans Module1, remplacer la procédure TransTab() par celle-ci :

Si le résultat vous convient, merci de cocher ce post comme solution en cliquant sur la coche verte dans le bandeau à droite ci-contre.
Cordialement,
Re c'est très bien il y a juste un détail il reprend la couleur des lignes si tout peut être en blanc c'est ma solution


1700650137390.png
 

Gégé-45550

XLDnaute Accro
Re c'est très bien il y a juste un détail il reprend la couleur des lignes si tout peut être en blanc c'est ma solution


Regarde la pièce jointe 1184346
Sub TransTab()
Dim derlig&, i&, compteur&, Ecart
Dim wksBase As Worksheet, wksSynthese As Worksheet
Dim TabS As Range

compteur = 6
Set wksBase = ThisWorkbook.Worksheets("Base")
Set wksSynthese = ThisWorkbook.Worksheets("Synthèse")
derlig = wksBase.Cells(Rows.Count, 1).End(xlUp).Row
wksSynthese.Range("A5").CurrentRegion.Clear
wksBase.Range("C1:H1,K1,N1:Q1,S1:Z1").Copy Destination:=wksSynthese.Range("A5")
For i = 2 To derlig
Ecart = Abs(wksBase.Range("Z" & i).Value)
If Ecart >= 100 Then
wksBase.Range("C" & i & ":H" & i & ",K" & i & ",N" & i & ":Q" & i & ",S" & i & ":Z" & i).Copy
With wksSynthese.Range("A" & compteur)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
.Application.CutCopyMode = False
End With
wksSynthese.Range("A" & compteur & ":S" & compteur).Interior.Color = xlNone
compteur = compteur + 1
End If
Next
Set TabS = wksBase.Range("A1:Z" & derlig)
If Not TabS.ListObject Is Nothing Then
MsgBox "La plage A1:Z" & derlig & " est déjà constituée en tableau structuré nommé : " & TabS.ListObject.DisplayName, vbOKOnly
Exit Sub
Else
TabS.Parent.ListObjects.Add(xlSrcRange, TabS, , xlYes).Name = "Base"
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 708
Messages
2 112 090
Membres
111 416
dernier inscrit
philipperoy83