Gwendoline
XLDnaute Junior
Bonjour,
J'ai créé un VBA pour me faire des onglets par personne. Cela fonctionne quand je démarre le VBA depuis ALT+F11 mais quand j'applique la VBA dans une macro, cela ne fonctionne pas correctement.
Résultat : elle supprime plus de colonne que j'ai souhaitées.
J'ai beau cherché, je ne vois pas où j'ai fauté.
Votre aide sera très utile.
Merci
🙁
	
	
	
	
	
		
	
		
			
		
		
	
				
			J'ai créé un VBA pour me faire des onglets par personne. Cela fonctionne quand je démarre le VBA depuis ALT+F11 mais quand j'applique la VBA dans une macro, cela ne fonctionne pas correctement.
Résultat : elle supprime plus de colonne que j'ai souhaitées.
J'ai beau cherché, je ne vois pas où j'ai fauté.
Votre aide sera très utile.
Merci
🙁
		VB:
	
	
	    Sub OngletManager()
    Dim DLig As Long, DCol As Integer
    Dim Mondico As Object
    Dim aa As String, bb As String
    Dim J As Long
    Dim Tablo
    Application.ScreenUpdating = False
      ' Partie distribution des infos
    Set Mondico = CreateObject("Scripting.Dictionary")
    With Sheets("_Data")
        DLig = .Range("A" & Rows.Count).End(xlUp).Row 'Compter le nombre de lignes dans _Data
        DCol = Cells(1, Columns.Count).End(xlToLeft).Column 'Compter le nombre de colonnes dans _Data
        For J = 2 To DLig
            Mondico(.Range("A" & J).Value) = .Range("A" & J).Value
        Next J
      
        Tablo = Mondico.Items
    
        For J = 0 To Mondico.Count - 1
            aa = Tablo(J)
            If FeuilleExiste(CStr(Tablo(J))) = False Then
                Sheets.Add after:=Sheets(Sheets.Count)
                ActiveSheet.Name = (aa)
                .Range(.Cells(1, 1), .Cells(1, DCol)).Copy Destination:=ActiveSheet.Range("A5")
            ElseIf FeuilleExiste(aa) = True And Not IsEmpty(Sheets(aa).Range("A6")) Then
                Sheets(aa).Range("A6:Q" & DLig).ClearContents
            End If
        Next J
        For k = 2 To DLig
        bb = .Cells(k, 1)
        .Range(.Cells(k, 1), .Cells(k, DCol)).Copy Destination:=Sheets(bb).Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
        Next k
    End With
'Mise en forme des colonnes
        For Z = 5 To Mondico.Count + 4
            Sheets(Z).Select
            Range("C:D").Delete
            Range("D:D").Delete
            Range("F:J").Delete
            Cells.EntireColumn.AutoFit
'Collage spécial
            Range("A1:M100").Copy
            Range("A1:M100").PasteSpecial (xlPasteValues)
            Range("A1").Select
                With ActiveWindow
                .DisplayGridlines = False
                End With
        Next Z
       
    Application.ScreenUpdating = True
    End Sub
        Function FeuilleExiste(nom As String) As Boolean
          On Error Resume Next
          FeuilleExiste = Sheets(nom).Name <> ""
          On Error GoTo 0
        End Function 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		