XL 2013 MACRO : Transférer des données entre onglets

Omegan

XLDnaute Nouveau
Bonjour à tous,

Actuellement grand débutant en VBA, je suis entrain de monter un outil de Suivi dans le cadre de mon boulot. Pour cela j'utilise principalement une macro qui copie/colle une base de donnée stocké d'un onglet à un autre. Mon objectif final est de pouvoir automatiser le transfert et classer l'ensemble des informations présente (classé par lignes) pour pouvoir les analyser et établir un suivi.

Avant de vous dévoiler le code, j'aimerai que vous m'apportiez les éléments suivants :
- Créer une fonction pour éviter de recopier le code inutilement
- Simplifier mon code en évitant les .Select
- Effacer la ligne sur 0. lorsqu'elle a était copié
- Mettre en place un système qui permettrai que mes formules de total puissent inclurent les lignes collées automatiquement (pour ça je suis vraiment coincé, voir formules onglet 2.)
- Faire en sortes que mon code fonctionne parfaitement (en effet, au vu de mon tâtonnement je pense avoir fais des petites erreurs qui influent sur l'efficacité du code)


Voici le code que j'utilise (en PJ le document en entier) :

Sub MAJSuivi()

' Définition des variables
Dim Fourni As String
Dim Fourni2 As Range
Dim lig, lig2, lig3 As Long
Dim col As String
Dim i, j As Integer

Dim wsA As Worksheet
Dim wsB As Worksheet
Dim Suivi As Workbook
Dim nblignetot As Long

' Paramétrage des variables

Set Suivi = ThisWorkbook
Set wsA = Suivi.Worksheets("0.")
Set wsB = Suivi.Worksheets("Test")

nblignetot = WorksheetFunction.CountA(Range("D:D")) 'Delimitation de la zone de travail
lig2 = 0 'Initialisation

'MsgBox "Nombre de ligne =" & nblignetot


For i = 8 To nblignetot

wsA.Select 'Trouver le n° du fournisseur
col = "B"
lig = i
Fourni = Cells(lig, col)
MsgBox "Nombre de ligne tot : " & nblignetot 'Verif des variables
MsgBox "Fournisseur en cours : " & Fourni
MsgBox "numéro de ligne = " & lig

If Fourni = "1" Then

wsB.Select
Columns("B:B").Select
Set Fourni2 = Selection.Find(What:=Fourni, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False) 'Recherche dans l'onglet Test du placement du fournisseur en question

If Fourni2 Is Nothing Then
MsgBox ("Fournisseur non attribué : ") & Fourni

Else

'MsgBox ("Fourni2 = " & Fourni2) 'Verif Valeur Fourni2
Fourni2.Select
Selection.EntireRow.Insert 'Ajout d'une ligne pour coller les infos de l'onglet 0.
lig2 = ActiveCell.Row
'MsgBox ("lig2 : " & lig2) 'Verif valeur ligne active lig2
'MsgBox ("lig : " & lig)

wsA.Select 'Couper coller (+ mise en forme de la ligne selon n-1)
Rows(lig).Cut

wsB.Select
Rows(lig2).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Range("A" & lig2 & ":B" & lig2).Select
Selection.ClearContents

lig3 = lig2 - 1
MsgBox ("lig3 = " & lig3)

Rows(lig3).Copy
Rows(lig2).PasteSpecial xlFormats

Application.CutCopyMode = False 'Fin

End If


ElseIf Fourni = "2" Then


//Ainsi de suite jusqu'à mon dernier fournisseur.
 

Pièces jointes

  • MACRO MAJ.xlsm
    41.9 KB · Affichages: 14

Omegan

XLDnaute Nouveau
Re,

Je ne pense pas car sur mon fichier actuel, je n'ai pas la somme des M, et pas de formule présente dans la cellule non plus.
1036535

Je peux te donner toutes les infos mais par soucis d'anonymat je peux le faire uniquement en PV...

Ok, tiens moi au courant et si jamais c'est pas super compliqué j'aimerai bien que tu me dise le process que je puisse les rentrer moi même.

Bye ;)
 

Omegan

XLDnaute Nouveau
Salut Salut !

Ah oui tu parle du grand total, oui celui là fonctionne.

C'est en effet une des formules que je veux mettre en place. Moi je parlais des totaux par fournisseurs (lignes orangé).
Et oui du coup c'est l'ensemble de ces formules que j'aimerai mettre en place.

++
 
Dernière édition:

Omegan

XLDnaute Nouveau
Bonjour !!

Me manque que les formules des sous totaux, lignes orangés.
Les formules des totaux finaux (ceux que tu as pris en compte) se calculent grâce aux sous totaux de chaque fournisseur (Voir onglet 3).

Il faut juste faire attention, c'est pas des moyennes partout.
Plusieurs formules utilisent la colonne "gagné" pour relever uniquement les valeurs lorsque le fournisseur gagne le projet et non sur l'ensemble des lignes de projets.

Voici le détail des sous formules :

SCOPE :
- Plusieurs possibilités : EPC / Fourniture / Pose
- Objectif : Identifier le plus utilisé indépendamment de la colonne gagné/perdu

F :
- Plusieurs possibilités : Pieux battus / Pieux vissés / Gabion / Longrine
- Objectif : Identifier le plus utilisé indépendamment de la colonne gagné/perdu

I :
- Plusieurs possibilités : EXW / CIF / DAP / DDP
- Objectif : Identifier le plus utilisé indépendamment de la colonne gagné/perdu


Toutes les autres colonnes des Prix :
- Moyenne des prix
- Objectif : Calculer le prix moyen par projets gagné pour chaque fournisseur

M :
- Moyenne des M
- Objectif : Calculer les M moyens par projets gagné pour chaque fournisseur

++ ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 082
Membres
112 653
dernier inscrit
flapynot7x