Simplification de code

Bonjour, j'aurai voulu savoir s'il été possible d'améliorer ces codes :

Private Sub CommandButton1_Click()

Dim DerLigne%, Derligne3%

    DerLigne = Sheets("Commentaires").Range("A" & Rows.Count).End(xlUp).Row + 1
    Derligne3 = Sheets("Planning").Range("D" & Rows.Count).End(xlUp).Row

    If Not Application.Intersect(ActiveCell, Range("E9:AW" & Derligne3)) Is Nothing Then

        NoLigne = ActiveCell.Row
        NoColonne = ActiveCell.Column

'Ajouter le commentaire      
       With Sheets("Commentaires")
            .Range("A" & DerLigne).Value = Cells(NoLigne, 4).Value
            .Range("B" & DerLigne).Value = Cells(7, NoColonne).Value
            .Range("C" & DerLigne).Value = TextBox1.Value
            .Range("E" & DerLigne).Value = Now()
        End With

    End If

'Supprimer les doublons les plus anciens 
   For L = Sheets("Commentaires").Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    For j = Sheets("Commentaires").Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
        If Sheets("Commentaires").Cells(j, 4) = Sheets("Commentaires").Cells(L, 4) Then
        If Sheets("Commentaires").Cells(j, 5) < Sheets("Commentaires").Cells(L, 5) Then
        Sheets("Commentaires").Cells(j, 1).EntireRow.Delete
    End If: End If
    Next j: Next L

'Supprimer les commentaires (lignes vides)
   With Sheets("Commentaires")
        For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("C" & i).Value = "" Then
                .Rows(i).Delete
            End If
        Next i
    End With

Call AjoutCommentaires

    Unload Me

End Sub
Sub AjoutCommentaires()

On Error Resume Next
Dim DerLigne%, DerLigne2%
Dim Comm As String

DerLigne = Sheets("Planning").Range("D" & Rows.Count).End(xlUp).Row
DerLigne2 = Sheets("Commentaires").Range("D" & Rows.Count).End(xlUp).Row

Application.ScreenUpdating = False

With Sheets("Planning")
    .Range("E7:AW7").NumberFormat = "General" 'Je mets les dates en format standard
   .Range("E9:AW" & DerLigne).ClearComments  'Je supprime les commentaires de la plage

    For Each cell In .Range("E9:AW" & DerLigne)   'Je fais une boucle : si commentaire DATE/NOM alors insertion planning
       For NoLigne = 9 To DerLigne
            For NoColonne = 5 To 49

                Comm = ((Cells(NoLigne, 4)) & (Cells(7, NoColonne)))
                For i = 2 To DerLigne2
                    If Sheets("Commentaires").Range("D" & i) = Comm Then

                                    .Cells(NoLigne, NoColonne).AddComment
                                    .Cells(NoLigne, NoColonne).Comment.Text Text:=Sheets("Commentaires").Range("C" & i).Value
                    End If
                Next i
            Next NoColonne
        Next NoLigne

    Next

    .Range("E7:AW7").NumberFormat = "dd" 'Je remets les date en format "jj"
End With

Application.ScreenUpdating = True
End Sub

Merci

bonjour,

Un code est étroitement lié à la feuille et au classeur auquel il se rapporte...

Difficile d'optimiser juste avec le code...

Si j'en juge par le temps mis pour naviguer dans ton planning sur l'avant dernier fil (dans le dernier classeur que j'ai téléchargé) il doit y avoir matière à gain de temps...

Moi je déteste les devinettes : S'il faut chercher entre tous les modules ou est la macro et dans quel feuille est le bouton qui lance cette macro...

C'est à toi d'apporter ces précisions. En plus du classeur à joindre c'est à toi de préciser sur la feuille "blabla", quand la cellule B12bis est sélectionnée, si on exécute la macro sub truc() en appuyant sur le bouton bleu....

Faute de ces précisions comment veux-tu qu'on améliore quelque chose. ActiveCell dans un code VBA : ça dit pas ou tu habites ni dans quelle feuille on travaille...

Enfin bref... vala !

[Edit] Il en va de même avec les usf s'il y a une demi douzaine de formulaire il doit y avoir à peu près autant de CommandButton1 alors pour savoir comment aller à la pêche !

A+

J'ai une feuille("Commentaires") avec 3 colonnes (NOM - DATE - COMMENTAIRE)

ex: NOM - DATE - COMMENTAIRE

Mr JEAN - 01/04/2017 - Lille

Mme MARIE -12/07/2017 - Bordeaux

J'essai de transposer les commentaires de ma feuille ("Commentaires") dans mon planning ("E9:AW" & DernièreLigne)

  • les noms ("D9:D" & DernièreLigne)
  • les dates("E7:AW7")

PS: en faisant clic droit dans le planning, on peux inserer des commentaire via un userform.

J'ai vu que l'on pouvais le faire avec LBound et UBound mais je n'y arrive pas.

Cordialement

Benoist

Désolé, j'ai zappé ta réponse... Je vais essayé de me pencher dessus mais je ne suis pas certain de pouvoir faire grand chose avant le 25 Avril, à partir de mercredi je serai absent !

A+

Te casses pas la tête Galopin01,

J' ai réussi à trouver un code à base de fonctions et il est ultra rapide et fonctionne parfaitement.

Un grand merci à toi et à tout ceux qui on pris le temps de s' occuper de mon problème.

Amicalement

Benoist

Bah, je me faisais pas trop de souçi... J'ai vu bien pire que ça !

Ya juste quelques lourdeurs que je me serais bien fait un plaisir de corriger.

Mébon j'aurai visiblement pas le temps avant de partir !

A+

J'avais pris le problème à l' envers nais je voyais pas comment faire autrement. Dans mon code je cherchais pour chaque cellule si un commentaire existait alors qu'il il fallait faire le contraire, trouver pour tout les commentaires compris entre la date de début et la date de fin du planning, la cellule correspondante. Il y aura toujours moins de commentaires que de cellule.

Rechercher des sujets similaires à "simplification code"