Probème de compilation de mon code
Bonjour et Bonne année pour tout le monde
J'ai un problème dans mon code, l'application consiste à copier des informations sur un fichier et les coller dans un autre fichier.
Autre chose, mon code va pas jusqu'au bout si je l'exécute sur un bouton ainsi que je veux faire un copier/coller simple sur Lien GDP mais j'arrive pas à le faire.
Cordialement
Sub Bdd_Source()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Application.DisplayAlerts = False
classeur_base = ActiveWorkbook.Name
repertoire = ActiveWorkbook.Path
'nettoyage
'on choisi la Bdd source
MsgBox ("Merci de sélectionner le classeur BdD Source")
'ouvrir une fenetre pour choisir le fichier BdD Source à ouvrir
classeur_source_full = Application.GetOpenFilename("Fichiers Excel (*.xl*), *.xl*")
'Si le fichier excel choisit contient la BdD Source, on l'ouvre
If InStr(1, classeur_source_full, "BdD Source") < 1 Then
MsgBox ("Ce n'est le classeur de BdD Source")
Exit Sub
Else
Workbooks.Open Filename:=classeur_source_full
Sheets("BdD Source Auto").Select
classeur_charge = ActiveWorkbook.Name
repertoire = ActiveWorkbook.Path
' on copie la Bdd source auto
Range("B3").FormulaR1C1 = "=COUNTA(R[3]C:R[999999]C)"
nbproduits = Range("B3").Value
Range("B3").ClearContents
'Type de source, Winrate, ID, US, Client, Projet, Type de produit
Sheets("BdD Source Auto").Select
Sheets("BdD Source Auto").Range("A6:G" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("B6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
' Workbooks(classeur_charge).Activate
' Sheets("BdD Source Auto").Range("E6:Z" & nbproduits + 5).Copy
' Workbooks(classeur_base).Activate
' Sheets("Feuil2").Range("G6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
' SkipBlanks:=False, Transpose:=False
' Type de projet NTN-SNR
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("J6:J" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("I6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Nombre de pièces IOD demandées
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("U6:W" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("J6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Date de livraison JPC
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("Y6:Y" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("M6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("Feuil2").Range("M6").NumberFormat = "dd/mm/yyyy"
'Chef de projet
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("K6:K" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("N6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Lien GDP
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("P6:P" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("O6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'FPI
Workbooks(classeur_charge).Activate
Sheets("BdD Source Auto").Range("I6:I" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("P6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("Feuil2").Range("A6:A" & nbproduits + 5) = "Auto"
'on compte le nb de lignes dans Bdd Source
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("A3").FormulaR1C1 = "=COUNTA(R[3]C:R[999999]C)"
nbcellules = Sheets("Feuil2").Range("A3").Value
Sheets("Feuil2").Range("A3").ClearContents
'---------------------------------------------- Indus ---------------------------------------------------------------------------------------------
' on copie la Bdd source indus
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("B3").FormulaR1C1 = "=COUNTA(R[3]C:R[999999]C)"
nbproduits1 = Sheets("BdD Source Indus").Range("B3").Value
Sheets("BdD Source Indus").Range("B3").ClearContents
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range(Cells(nbcellules + 6, 1), Cells(nbproduits1 + nbcellules + 5, 1)) = "Indus"
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("A6:D" & nbproduits1 + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("B" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Sheets("Feuil2").Range("A" & nbcellules + 6) = "Indus"
'Range(Cells(nbcellules + 6, 1), Cells(nbproduits1 + nbcellules + 5, 1)) = "Indus"
'on copie Client-projet-type de produit
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("F6:H" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("F" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Type de projet NTN-SNR
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("K6:K" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("I" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Nombre et date IOD
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("S6:T" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("J" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Nombre JPC
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("U6:U" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("L" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Date JPC
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("W6:W" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("M" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Chef du projet
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("N6:N" & nbproduits1 + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("N" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'FPI
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("J6:J" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("P" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Lien GDP
Workbooks(classeur_charge).Activate
Sheets("BdD Source Indus").Range("V6:V" & nbproduits + 5).Copy
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("O" & nbcellules + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
' on calcul le nb de cellules non vides
Workbooks(classeur_base).Activate
Sheets("Feuil2").Range("A3").FormulaR1C1 = "=COUNTA(R[3]C:R[999999]C)"
nbcellules = Sheets("Feuil2").Range("A3").Value
Sheets("Feuil2").Range("A3").ClearContents
For i = 1 To nbcellules + 10
' 'si winrate=0, on éfface toute la ligne
If Range("C" & i).Value = "0" Then Rows(i).EntireRow.ClearContents
Next
Calculate
'on trie ensuite la colonne Domaine par ordre alphabétique en supprimant les lignes vides
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:= _
Range("A6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("A6:AE10000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Calculate
Workbooks(classeur_charge).Close False
Application.DisplayAlerts = True
End If
End SubBonjour,
Pour te faciliter la vie ... et celle de ceux qui voudront bien t'aider ... il serait plus judicieux de joindre ton fichier ...
Le voilà,
En gros, il faut que je fais copier/coller pour des données d'un fichier vers un autre fichier et puis il faut que je place automatiquement les données de la colonne N et la colonne J dans les mois correspondants.
Pour l'instant je concentre sur la manière de copier/coller des données ainsi que la dernière boucle que j'ai fais est correcte mais le macro ne l'exécute pas.
Re,
Merci pour les fichiers ...
Dès que j'ai un petit moment ... je plongerai dans tes macros ...
Bonjour,
En regardant rapidement ta macro...je crois deviner comment les choses se sont mises en place ...
Et j'ai donc deux remarques à te faire :
1. Félicitations ... pour ce que tu as entrepris de faire tout seul ... beaucoup de gens auraient abandonné ...
2. Pour bien faire ... et je crois que c'est ton objectif ... je vais devoir prendre un peu temps ... pour repartir du début ...
Re,
Il va de soi ... que sans le fichier initial qui contient les données à copier ... je n'ai pas pu tester le code revisité ...
Cependant, tu trouveras dans le fichier joint ... dans le module : mod_Bdd_source ... la première version amendée ...
Pour tout te dire, il me resterait bien quelques questions à clarifier ... Mais, une chose après l'autre ...
Il ne faut pas hésiter à me faire part de tous tes commentaires ...
Merci bien pour votre aide, je trouve votre code est efficace et compréhensible par rapport au code ce que j'ai écris, cependant j'ai un bug sur la ligne suivante et que je n'arrive pas surtout à remplir la colonne A avec le mot Indus :
' ' Remplir la Colonne A avec "Indus"
w1.Sheets("Feuil2").Range(Cells(nbcellules + 6, 1), Cells(nbproduits1 + nbcellules + 5, 1)) = "Indus"[/u]Ainsi que cette partie n'est pas inclus dans la compilation du code:
For i = 1 To nbcellules + 10
'si winrate=0, on efface toute la ligne
If Range("C" & i).Value = "0" Then Rows(i).EntireRow.ClearContents
Next i
Calculate
'on trie ensuite la colonne Domaine par ordre alphabétique en supprimant les lignes vides
w1.Worksheets("Feuil2").Sort.SortFields.Clear
w1.Worksheets("Feuil2").Sort.SortFields.Add Key:= _
Range("A6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With w1.Worksheets("Feuil2").Sort
.SetRange Range("A6:AE10000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Calculate Re,
Comme je te l'ai dit ... dans mon message précédent ... le point que tu soulèves fait partie de mes questions ...
Et... quel est le véritable objectif du tri ... après suppression des lignes à zéro ...
Il va de soi ... que sans le fichier initial qui contient les données à copier ... je n'ai pas pu tester le code revisité ...
Donc, il ne faut pas hésiter à joindre ton fichier Bdd ...
l'objectif de supprimer c'est d'éliminer les projets dans le cas on trouve winrate=0, ça veut que se sont des projets pas intéressantes pour notre étude et après supprimer les winrate=0 on fait un trie pour que le résultat soit organisé pour nous.
Mais le premier problème ça consiste à coller le mot indus après le mot auto dans la colonne A.
Re,
Merci pour le fichier ...
Cela va me permettre de rapidement faire un test ...
Au niveau des winrates à 0 ... ne faut-il pas supprimer toute la ligne ... au lieu d'effacer uniquement les cellules de la ligne ...???
Ci-joint ton fichier test ...
Re,
J'avoue que votre code est excellent, la compilation pas à pas marche très bien mais au temps que je clique sur le bouton résultat je trouve que l'exécution du programme n'est pas parfait , il n'efface pas les WR=0 ainsi que la disparition des boutons sur la Feuil1 comme indiquée dans les photos jointes.
je sais d'où vient ce problème, j'ai vérifié au niveau du débogage pas à pas mais je n'arrive pas à le trouver.
Concernant les winrate, l'essentiel pour moi c'est d'effacer toute la ligne quand on trouve winrate=0 .
ET un grand merci pour le temps que vous avez consacrez pour moi afin de trouver les bonnes résultats.
Salut Lotfy,
L'avantage d'une macro ... c'est que soit elle fonctionne ... soit elle ne fonctionne pas ...
Donc, je ne comprends pas ce que tu dis ...
A la fin du code, toutes les lignes qui contiennent un winrate égal à 0 sont supprimées ... oui ou non ...???
Oui bien sur vouas avez raison et je suis convaincu que le code est bon mais au moment quand je clique sur le bouton Résultat pour exécuter le programme , je trouve pas les bonnes résultats, je sais pas si c'est un défaut au niveau de la version de l'Excel ou autre chose .
Avez vous exécuter le programme en cliquant sur le bouton Résultat sur la page d'accueil ?
Lotfi a écrit :Oui bien sur vouas avez raison et je suis convaincu que le code est bon mais au moment quand je clique sur le bouton Résultat pour exécuter le programme , je trouve pas les bonnes résultats, je sais pas si c'est un défaut au niveau de la version de l'Excel ou autre chose .
Avez vous exécuter le programme en cliquant sur le bouton Résultat sur la page d'accueil ?
Lotfi,
Non ... je n'ai pas testé le bouton Résultat ...!!!
Je vais le faire tout de suite ... et je tiens au courant ...
Lotfi,
Je viens de comprendre ce que s'est passé ...
Comme je n'avais pas vu ce Menu de la première page ... dans le code, j'avais ajouté une séquence de "nettoyage" ...
Ci-joint ...cette version 2 corrigée devrait fonctionner normalement ...
Je vais devenir fou avec ce programme,
je sais pas d'où vient le problème au niveau de l'exécution c'est vraiment incompréhensible je trouve toujours le même résultats.
je comprends pas pk
Lotfi a écrit :Je vais devenir fou avec ce programme,
je sais pas d'où vient le problème au niveau de l'exécution c'est vraiment incompréhensible je trouve toujours le même résultats.
je comprends pas pk
Lotfi,
Malheureusement .. tu as être plus précis ... pour que je comprenne ...
Que veut dire : " je trouve toujours le même résultat .."
Grâce à quoi vois-tu qu'il y a des erreurs ...???
Au fait sur le dernier fichier que vous avez fais:
je clique sur le bouton Résultat après je choisis le BdD mais dans le résultat je trouve toujours des Winrate=0 .
C'est ça je comprend pas, je vous demande si vous avez trouvez les bonnes résultats( cela veut dire qu'il y a pas des winrate=0) , peut être que mon pc est devenu fou ou bien y a des fantômes dedans
Re,
Merci Lotfi ... je vais pouvoir retourner tester ...
Re,
Je ne sais qui a "inventé" ... la première feuille ... mais c'est un vrai ....
Enfin ... l'essentiel c'est ta macro ...
Merci de tester cette dernière version ...
Re James
Je sais pas si ça marche ou pas chez vous mais pour moi ça marche plus même le bouton de la première feuil n'exécute plus.
ça marche pour vous ?