Chercher l'erreur?!!!

Résolu/Fermé
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 - Modifié par NaXiLeAn le 1/08/2016 à 12:02
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 - 2 août 2016 à 12:26
Bonjour,
J'ai fichier Excel que je malmène depuis quelques jours, grâce à CCM.
[VBA explicite : tout est annoté ou presque puisque je suis en cours d’apprentissage des scripts]
J'ajoute des commandes puis en enlève puis en rajoute...
Aujourd'hui, je suis perdue!

Mon traitement ne fonctionne plus.
Il bloc à la copie des données vers mon fichier (à problèmes).

Si quelqu'un veut bien me filer un p'tit coup de pouce, ça serait tip top (ouai c'est naze comme expression mais je suis un peu naze comme je m'y mets).

à vot' bon coeur, msieur-dam' 8)
En vous remerciant.
_________________________________________________________
Option Explicit

Dim cellX As Range


Private Sub EnRouge()
cellX.Interior.Color = RGB(255, 0, 0)
End Sub
Private Sub EnOrange()
cellX.Interior.Color = RGB(255, 192, 0)
End Sub
Private Sub EnVert()
cellX.Interior.Color = RGB(146, 208, 80)
End Sub

Private Sub Controle_Click()
'Définition des traitement pour réduire leurs écriture
Dim dcol As Integer, dlig As Long, i As Long

'Supprime l'affichage pour accelérer le traitement
Application.ScreenUpdating = False

'Défini la feuille active
Worksheets("1305").Select


' dernière colonne et dernière ligne
dcol = Cells(1, Columns.Count).End(xlToLeft).Column
dlig = Range("A" & Rows.Count).End(xlUp).Row

'supprimer les couleurs déjà existantes
Range([A1], Cells(dlig, dcol)).Interior.ColorIndex = xlNone

'Efface les données existantes
Range([A1], Cells(dlig, dcol)).ClearContents
'Efface le format de cellule existant
Range([A1], Cells(dlig, dcol)).ClearFormats

'Intègre les données du fichier source sans le modifier
Workbooks.Open Filename:="C:\Users\xx\Desktop\Fiche 1305\source\verifaprespaie.xlsx"
Workbooks("verifaprespaie.xlsx").Sheets("VERIFAPRESPAIE").Cells.Copy _
Destination:=Workbooks("Fiche 1305_test.xlsm").Sheets("1305").Cells(1, 1)
Workbooks("verifaprespaie.xlsx").Close False ' ferme sans sauve

'Envoi du traitement de la ligne 2 à la dernière ligne
For i = 2 To dlig

'colorer les cellules vides => Colonne J
If Range("J" & i) = 0 Then EnRouge ' col J : si vide

'colorer les cellules comprenant une date = mois en cours => Colonne O
If IsDate(Range("O" & i).Value) Then
If Year(Range("O" & i).Value) = Year(Date) And Month(Range("O" & i).Value) = Month(Date) Then EnRouge
End If

'Set cellX = Range("O" & i) ' test colonne O :
'If IsDate(cellX) Then ' si date O = mois en cours
'If Year(cellX) = Year(Date) And Month(cellX) = Month(Date) Then EnRouge
'End If

If Range("U" & i) = "Chèque " Then EnRouge ' col U : si "Chèque"

If Range("BI" & i) < 0 Then EnRouge ' col BI : si < 0
If Range("BO" & i) <> 0 Then EnRouge ' col BO : si <> 0
If Range("BP" & i) <> 0 Then EnRouge ' col BP : si <> 0
If Range("BQ" & i) <> 0 Then EnRouge ' col BQ : si <> 0
If Range("BR" & i) <> 0 Then EnRouge ' col BR : si <> 0

'colorer les cellules CH=0 ET CJ<>0 => Colonne CJ
If Range("CH" & i) = 0 And Range("CJ" & i) <> 0 Then
Range("CJ" & i).Interior.Color = RGB(255, 0, 0) ': rouge
End If

'colorer les cellules CI=0 ET CK<>0 => Colonne CK
If Range("CI" & i) = 0 And Range("CK" & i) <> 0 Then
Range("CK" & i).Interior.Color = RGB(255, 0, 0) ': rouge
End If

'colorer les cellules CL=0 ET CM<>0 => Colonne CL ET CM
If Range("CL" & i) = 0 And Range("CM" & i) <> 0 Then
Range("CM" & i).Interior.Color = RGB(255, 0, 0) ': rouge
End If

' calcul BZ : si BX <> 0
If Range("BX" & i) <> 0 Then
Range("BZ" & i) = ((Range("Bw" & i) * Range("BY" & i) / Range("Bx" & i)) * 0.1) And Range("BZ" & i).Interior.Color = RGB(255, 0, 0) And Range("BZ" & i).NumberFormat = "0.00"
End If

Call ColorContrôle

'Rétabli l'affichage supprimé pour accelérer le traitement
'Application.ScreenUpdating = True
Next i

End Sub

Sub ColorContrôle()
'Ajouter un "X" si ligne à contrôler
Dim dcol As Integer, dlig As Long, lig As Long, col As Integer
'Application.ScreenUpdating = False
dcol = Cells(1, Columns.Count).End(xlToLeft).Column
dlig = Range("A" & Rows.Count).End(xlUp).Row
Cells(1, dcol + 1) = "Contrôle"
For lig = 2 To dlig
For col = 1 To dcol
If Cells(lig, col).Interior.ColorIndex <> xlNone Then
Cells(lig, dcol + 1) = "X": Exit For
End If
Next col
Next lig
'supprimer les groupements de colonnes existants = ActiveSheet.Columns.Ungroup = True Then
'Effectuer le groupement des colonnes définies
Range("C:C").Columns.Group
Range("F:I").Columns.Group
Range("K:N").Columns.Group
Range("P:T").Columns.Group
Range("V:BH").Columns.Group
Range("BJ:BN").Columns.Group
Range("BR:BR").Columns.Group
Range("CN:DD").Columns.Group
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1

'Masquer des colonnes = Range("B:E").EntireColumn.Hidden = True

'Mise en forme Tableau
Range([A1], Cells(dlig, dcol + 1)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range([A1], Cells(dlig, dcol + 1)), , xlYes).Name = _
"Tableau1305"
Range("Tableau1305#All").Select
ActiveSheet.ListObjects("Tableau1305").TableStyle = "TableStyleMedium6"

Call Enreg
Application.ScreenUpdating = True
End Sub


Sub Enreg()
Dim Path As String, valeur As String
Path = ActiveWorkbook.Path & "\"
valeur = "Fiche 1305_VerifPaie_" & Format(Date, "dd-mmmm-yyyy") & "_" & Format(Time, "hh'mm'ss") & ".xlsx"
ThisWorkbook.SaveAs Path & valeur
Call BoutonControle
End Sub

Private Sub BoutonControle()
Controle.Visible = False 'Controle.Value

End Sub

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 août 2016 à 12:12
Bonjour,

En recopiant/modifiant tu n'aurais pas oublié une 'open' ?
Tu copies sur une feuille non présente.
0
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 1
Modifié par NaXiLeAn le 1/08/2016 à 12:21
Bonjour gbinforme,
Je colle sur la feuille active car je lance la macro depuis un bouton ce trouvant sur cette même feuille.
http://www.cjoint.com/c/FHbkrayIo71
La copie se fait bien sur la feuille active et puis le traitement s'interrompt.
Merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 août 2016 à 18:57
Bonjour NaXiLeAn,

Ton document s’appelle "Fiche-1305-test.xlsm"
et tu colles dans "Fiche_1305_test.xlsm"

Il ne faut pas confondre tiret et souligné ! Avec
Workbooks("verifaprespaie.xlsx").Sheets("VERIFAPRESPAIE").Cells.Copy _
Destination:=ThisWorkbook.Sheets("1305").Cells(1, 1)
cela fonctionne.
0
NaXiLeAn Messages postés 112 Date d'inscription mercredi 27 juillet 2016 Statut Membre Dernière intervention 2 juin 2020 1 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
2 août 2016 à 12:26
Bonjour et merci gbinforme,
Effectivement, aujourd'hui ça fonctionne :£
Et ce, sans modif...Va comprendre?!
Merci merci merci et encore merci.
0