Bonjour,
C'est atteignable oui, personnellement j'ai appris sur le tas, sans passer par des formations, mais j'ai eu le temps de le faire, si tu veux apprendre les bases du codage, tu as des cours sur différents sites, je pense par exemple à ce site, dans la section "Cours VBA".
Après dans le code fournit, il n'y a pas grand chose en réalité:
Déclaration de variables:
Dim RngSource As Range, RngCible As Range, Zone As Range, ligne As Range
Dim Ws As Worksheet
Dim ColDep As Long, ColFin As Long
Dim Filtre As Boolean
Utilisation d'une fonction avec un paramètre:
Set RngSource = GetRange("Sélectionnez la plage de cellules qui servira de référence.")
Set RngCible = GetRange("Sélectionnez la plage de cellules où vous voulez copier la mise en forme.")
C'est une fonction qui retourne une plage de cellules, on utilise Set parce qu'on utilise des objets.
Utilisation de la fonction msgbox:
Filtre = MsgBox("Voulez-vous mettre en forme les cellules masquées par un filtre?", vbYesNo, "Choix") = vbNo
Conditions et Exit Sub:
If RngSource Is Nothing Or RngCible Is Nothing Then
MsgBox "Au moins une des deux plages de cellules n'est pas renseignée, le programme ne peut continuer.", _
vbInformation, "Information"
Exit Sub
End If
Utilisation de l'objet application:
Application.ScreenUpdating = False
Manipulation des méthodes d'un objet Range:
RngCible.FormatConditions.Delete
RngSource.Copy
Boucle For sur des objets:
For Each Zone In RngCible.Areas
Next Zone
Encore l'utilisation d'un objet Range:
ColDep = RngCible.Column
ColFin = ColDep + RngCible.Columns.Count - 1
Set Ws = RngCible.Worksheet
Boucle For avec objets:
For Each ligne In Zone.Rows
Next ligne
Condition avec "Or" (OU)
If ligne.Hidden = False Or Not Filtre Then
Coller (généré par l'enregistreur de macro puis modifié pour utiliser des variables):
Ws.Range(Ws.Cells(ligne.Row, ColDep), Ws.Cells(ligne.Row, ColFin)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Utilisation d'une Fonction personnalisée:
Function GetRange(msg As String) As Range
On Error GoTo sortie
Set GetRange = Application.InputBox(msg, "Sélection", Type:=8)
'gestion d'erreur
Exit Function
sortie:
Set GetRange = Nothing
End Function
Euuuh, ouai, j'avais dis qu'il n'y avait pas grand chose, finalement tu as quand même pas mal d'informations dans le code