Soucis dans mon code vba excel.

nicolas -  
 nicolas -

Bonjour,


svp je pense j'ai un soucis dans mon code vba excel puisque il me sort des tableau vide

merci.

2 réponses

  1. blackmefias_3350 Messages postés 709 Date d'inscription   Statut Membre Dernière intervention   68
     

    Bonjour, 

    Merci pour votre demande d'aide , mais sans le code ou un partie du code VBA, il nous sera  impossible de vous aider . 

    pour mettre du code VBA , veuillez dans votre prochain message, l'introduire via le bouton du menu prévu à cet effet . 

    ce qui nous affichera ceci par exemple 

    Private Sub Commande14_Click()
    Dim alert As String
    alert = "êtes vous sûr ? "
    
    MsgBox (alert)
    
    End Sub

    0
    1. nicolas
       

      merci pour votre réponse 

      du coup j'ai mis le code dans le prochain message

      0
  2. nicolas
     
     Sub CreerFichierETRG2A()
        '  Chargement fiches
        Set uiAura = Sheets("UIAURA")
        Set param = Sheets("PARAMETRES")
        Set fourn = Sheets("FOURNISSEURS")
        '  Récupération du dossier de sauvegarde
        Dim repSauvegarde As String
        repSauvegarde = param.[G2].Value
        Dim annee As String
        annee = param.[G3].Value
        Dim mois As String
        mois = param.[G4].Value
        '  Suppression des alertes
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
        
        '  Chargement des modèles
        Dim fichierMain As Variant
        fichierMain = Application.ActiveWorkbook.Name
        Set modele_e = Workbooks(ActiveWorkbook.Name).Worksheets("Modèle-entête")
        Set modele_s = Workbooks(ActiveWorkbook.Name).Worksheets("Modèle-synthèse")
        Set modele_f = Workbooks(ActiveWorkbook.Name).Worksheets("Modèle-Ne-Pas-Facturer")
        '  Récupération des sous domaines
        Set rangeICTR = supprimeValeurNull(param.[B1:B15])
        Set rangeSup = supprimeValeurNull(param.[D1:D50])
        rangeICTR.Copy Destination:=uiAura.range("AP1")
        rangeSup.Rows("2:" + CStr(rangeSup.Count)).Copy Destination:=uiAura.range("AP" + CStr(rangeICTR.Count + 1))
        Set rangeICTRSupersonic = supprimeValeurNull(uiAura.[AP1:AP60])
        
        
       '  Pour chaque fournisseurs...
        For Each C In fourn.range("A2:A" & fourn.[A3000].End(xlUp).Row)
            'DETECTION si contract ICTR or  RCC
            If C Like "* Lot *" Or C Like "*Solution*" Then
            NomFeuille = "RCC"
            NomTotal = "Total Pénalités RCC"
            Else
            NomFeuille = "ICTR"
            NomTotal = "Total Pénalités ICTR"
            End If
        
            fourn.[B2] = C.Value
            modele_e.Copy After:=Sheets(Sheets.Count)
            ' Suppression des lignes inutiles au début pour tmp et renomme la feuille
            Rows(1).EntireRow.Delete
            Rows(1).EntireRow.Delete
            Rows(1).EntireRow.Delete
            ActiveSheet.Name = CStr("tmp")
            
            '  Filtrage pour le fournisseur en cours
             uiAura.[A26].CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=fourn.[B1:B2], CopyToRange:=[A1:AG1]
    
            Set tmp = Sheets("tmp")
            '  Filtrage des pénalités null -> On les vires
            tmp.range("A1:AG1").AutoFilter Field:=33, Criteria1:="=0", Operator:=xlFilterValues
            tmp.range("A2:AG100000").SpecialCells(xlCellTypeVisible).Delete
            On Error Resume Next
            tmp.ShowAllData
            
            '  Filtrage des sous domaines spécifiés dans la feuille PARAMETRES
            'Alors l'ancien dev à ici renommé la feuilel en bis etc , Je n'ai pas bien compris pourquoi mais ca marche :x
            tmp.Name = CStr("tmp_bis")
            modele_e.Copy After:=ActiveWorkb
            ook.Worksheets (ActiveWorkbook.Worksheets.Count)
            ActiveSheet.Name = CStr("tmp")
            Set tmp = Sheets("tmp")
            Sheets("tmp_bis").[A2].CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rangeICTRSupersonic, CopyToRange:=tmp.[A1:AG1]
            Sheets("tmp_bis").Delete
            On Error GoTo 0
            
            '  Vérification de l'existence du répertoire fournisseur + fichier sauvegarde ref chantiers pénalisés
            If Not dossierExiste(repSauvegarde + C.Value) Then
              MkDir repSauvegarde + C.Value
            End If
            If Not FileExists(repSauvegarde + C.Value + "\" + "chantiers_penalises_" + C.Value & ".xlsx") Then
              Set NewFileChantiersPenalises = Workbooks.Add
              NewFileChantiersPenalises.Sheets(1).[A1] = "Ref chantier"
              NewFileChantiersPenalises.ActiveSheet.Rows(1).EntireRow.Delete
              NewFileChantiersPenalises.ActiveSheet.Name = "Ref chantiers pénalisés"
              NewFileChantiersPenalises.SaveAs repSauvegarde + C.Value + "\" + "chantiers_penalises_" + C.Value & ".xlsx"
              NewFileChantiersPenalises.Close
            End If
            If Not FileExists(repSauvegarde + C.Value + "\" + "ne_pas_facturer_" + C.Value + ".xlsx") Then
              Set newFilePasFact = Workbooks.Add
              modele_f.Copy Before:=newFilePasFact.Worksheets(1)
              newFilePasFact.Sheets("Modèle-Ne-Pas-Facturer").Name = CStr("Chantiers à ne pas facturer")
              newFilePasFact.SaveAs repSauvegarde + C.Value + "\" + "ne_pas_facturer_" + C.Value + ".xlsx"
              newFilePasFact.Close
            End If
            
            Set nonPenal = Workbooks.Open(repSauvegarde + C.Value + "\" + "ne_pas_facturer_" + C.Value + ".xlsx")
            '  Ouverture fichiers réf chantiers pénalisés
            Set penal = Workbooks.Open(repSauvegarde + C.Value + "\" + "chantiers_penalises_" + C.Value & ".xlsx")
            ' On cherche la dernière ligne de penal pour pouvoir copier savoir où stocke rles futures ref chantiers à sauvegarder
            If Not IsEmpty(penal.ActiveSheet.range("A2")) Then
              NextRowPenal = penal.ActiveSheet.range("A2").End(xlDown).Row + 1
            Else
              NextRowPenal = 2
            End If
            
            '  Création fichier fournissseur
            Set NewFile = Workbooks.Add
            modele_e.Copy Before:=NewFile.Sheets(NewFile.Sheets.Count)
            Rows(1).EntireRow.Delete
            Rows(1).EntireRow.Delete
            Rows(1).EntireRow.Delete
            ActiveSheet.Name = CStr("chantiers déjà pénalisés")
            Set dejaPen = Sheets("chantiers déjà pénalisés")
            
            '  Suppression lignes déjà pénalisées dans tmp
            supprimeLigneSiDejaPenalise tmp, penal.Sheets(1), dejaPen, True
            supprimeLigneSiDejaPenalise tmp, nonPenal.Sheets(1), dejaPen, False
            supprimeLigneSiDejaPenaliseIDControle tmp, nonPenal.Sheets(1), dejaPen, False
            nonPenal.Close
            If IsEmpty(dejaPen.range("A2")) Then
              dejaPen.Delete
            End If
            
            ' Filtrage ICTR
            modele_e.Copy Before:=NewFile.Sheets(NewFile.Sheets.Count)
            ActiveSheet.Name = NomFeuille
                           
            On Error GoTo 0
            'Ici j'ai modifié et je suis passé par du mannuel car le copier collez par des filtres c'est extrement gourmant et ca utilisé toute la mémoire de VBA et bloqué la macro
            ExtractionFiltre rangeICTR, tmp, fichierMain, NewFile
            
            ' Filtrage Supersonic
            modele_e.Copy Before:=NewFile.Sheets(NewFile.Sheets.Count)
            ActiveSheet.Name = CStr(param.[C1])
    
            'Meme chose que pour les contracts ICTR
            On Error GoTo 0
            ExtractionFiltre rangeSup, tmp, fichierMain, NewFile
            On Error Resume Next
            NextRow = range("A2").End(xlDown).Row + 1
           ' On Error GoTo 0
            fourn.[A1] = uiAura.[C1]
            'Filtrage RCC
            
            '  Onglet de synthèse
            modele_s.Copy Before:=NewFile.Sheets(1)
            'ActiveSheet.Name = CStr("Synthèse")
            Worksheets("Modèle-synthèse").Name = CStr("Synthèse")
            Sheets("Synthèse").[B5] = NomTotal
            Sheets("Synthèse").[B2] = C.Value
            Sheets("Synthèse").[D4] = C.Value
            Sheets("Synthèse").[C3] = param.[G1]
            Sheets("Synthèse").[C5].Formula = "=" & NomFeuille & "!E1"
            Sheets("Synthèse").[C6].Formula = "=" & CStr(param.[C1]) & "!E1"
            Sheets("Synthèse").[D5].Formula = "=" & NomFeuille & "!AA3"
            Sheets("Synthèse").[D6].Formula = "=" & CStr(param.[C1]) & "!AA3"
            
            Worksheets("Feuil1").Delete
            ' On cherche la dernière ligne de tmp pour pouvoir copier les ref chantiers dans le fichiers de sauvegarde
            If Not IsEmpty(tmp.range("A1")) Then
              NextRowTmp = tmp.range("A1").End(xlDown).Row + 1
            Else
              NextRowTmp = 2
            End If
            '  Copie des nouvelles réf chantiers
            tmp.range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Copy penal.ActiveSheet.range("A" + CStr(NextRowPenal))
            ' Sauvegarde fichier de pénalités
            penal.Save
            penal.Close
            '  Suppression de la feuille temporaire
            tmp.Delete
            ' Vérification existence rep année
            If Not dossierExiste(repSauvegarde + C.Value + "\" + annee) Then
              MkDir repSauvegarde + C.Value + "\" + annee
            End If
            ' Vérification existence rep mois
            If Not dossierExiste(repSauvegarde + C.Value + "\" + annee + "\" + mois) Then
              MkDir repSauvegarde + C.Value + "\" + annee + "\" + mois
            End If
            ' Sauvegarde fichier de pénalités ICTR/SUPERSONIC
            If Not WorksheetExists("chantiers déjà pénalisés") Then
              NewFile.SaveAs repSauvegarde + C.Value + "\" + annee + "\" + mois + "\" + C.Value & "_" & mois & ".xlsx"
              NewFile.Close
            Else
              Set NewFileBis = NewFile
              NewFileBis.SaveAs repSauvegarde + C.Value + "\" + annee + "\" + mois + "\" + C.Value & "_" & mois & "_debug.xlsx"
              NewFile.Sheets("chantiers déjà pénalisés").Delete
              NewFile.SaveAs repSauvegarde + C.Value + "\" + annee + "\" + mois + "\" + C.Value & "_" & mois & ".xlsx"
              NewFile.Close
            End If
        Next C
        uiAura.range("$A$26:$AG$100000").AutoFilter
        fourn.[B2] = ""
        uiAura.Select
    End Sub
    0