XL 2010 boucle de comparaison pour update cellule ne fonctionne pas

Niquido

XLDnaute Junior
Bonjour à tous,

Voilà cela fait 2 jours que je me prend la tête sur de la mise à jours de cellules :mad::mad::mad::mad:
Je vous met en pièce jointe un fichier avec 2 macros "Reset_MAJ" pour mettre le tableau tout propre et une macros "MAJ" pour vous montrer ce que je souhaite faire.

Cette macro n'a pas de boucle et ne traite que la moitié des données car je ne voulais pas perdre de temps à la continuer pour comparer les autres colonnes.

Quand vous aller ouvrir le fichier mon tableau est comme je souhaiterai qu'il soit si la macro marche comme il faut en utilisant des boucles.

Le but serrai donc de réaliser cette macro avec des boucles mais j'ai fait plein d'essais et ça ne marche pour de multiple cause
  1. J'ai essayé de lire le vrai/faux de ma colonne "test colonnes 1" puis en fonction faire les actions que l'on peut voir dans ma macro, mais je crois qu'excel ne veux pas car ce n'est pas du string pour lui.
  2. J'ai essayé de ne pas passer par les colonnes test en comparant directement les cellules mais Excel n'y arrive pas quand les cellules sont vides voir les bout de macros dans le modules macros_ne_marche_pas (attention ces macros viennent d'un autre fichier donc les colonnes ne correspondent pas mais c'est le principe qui ne marche pas)
Mon but est de:
- comparer les colonnes colonne1 old avec colonne1 new
- si les 2 cellules des colonnes ont des différences:
- enregistrer dans une variable1 la valeur de la cellule de la colonne1 new
- enregistrer dans une variable2 la valeur de la cellule de la colonne1 old
- regarder s'il y a un commentaire dans la cellule de la colonne1 old
- si oui le sauvegarder dans une variable3
- mettre dans le commentaire "date du jour : + variable2 + à la ligne + variable3"
- mettre dans la cellule la variable1
- si non mettre dans le commentaire "date du jour : + variable2"​
- mettre dans la cellule de la colonne1 old la variable1​

En gros voilà
et après je le fait avec les colonnes "2"

Merci d'avance pour vôtre aide précieuse !!!!!!;)
Nicolas
 

Pièces jointes

  • bout de macro.xlsm
    31.2 KB · Affichages: 48

Iznogood1

XLDnaute Impliqué
Bonjour,

Regarde ce code - lance CompareTout()

Code:
Option Explicit

'La boucle
Sub CompareTout()

  Dim i As Integer

  For i = 2 To Feuil1.ListObjects("Tableau1").ListColumns.Count Step 2
    CompareCol i, i + 1
  Next i

End Sub



'La comparaison colonne à colonne
Sub CompareCol(col1 As Integer, col2 As Integer)

  Dim r As Range
  Dim variable1 As Variant
  Dim variable2 As Variant
  Dim variable3 As Variant

  For Each r In Feuil1.ListObjects("Tableau1").ListColumns(1).DataBodyRange
  'comparer les colonnes colonne1 old avec colonne1 new

    If r.Offset(0, col1 - 1).Value <> r.Offset(0, col2 - 1).Value Then
    
      'si les 2 cellules des colonnes ont des différences
      'enregistrer dans une variable1 la valeur de la cellule de la colonne1 new
      'enregistrer dans une variable2 la valeur de la cellule de la colonne1 old
      variable1 = r.Offset(0, col1 - 1).Value
      variable2 = r.Offset(0, col2 - 1).Value

      'regarder s'il y a un commentaire dans la cellule de la colonne1 old
      If Not r.Offset(0, col1 - 1).Comment Is Nothing Then
        'si oui le sauvegarder dans une variable3
        variable3 = r.Offset(0, col1 - 1).Comment.Text
 
        'mettre dans le commentaire "date du jour : + variable2 + à la ligne + variable3"
         r.Offset(0, col1 - 1).Comment.Text (Format(Now(), "dd/mm/yy") & ":" & vbCrLf & variable2 & vbCrLf & variable3)

        'mettre dans la cellule la variable1
        ' ??? DANS QUELLE CELLULE ???
      Else
      
        'si non mettre dans le commentaire "date du jour : + variable2"?
        r.Offset(0, col1 - 1).AddComment (Format(Now(), "dd/mm/yy") & ":" & variable2)
     
        '- mettre dans la cellule de la colonne1 old la variable1
        ' ??? DANS QUELLE CELLULE ???
  
      End If
  
    End If
  
  Next r

End Sub
 

Niquido

XLDnaute Junior
Slt Iznogood1 et déjà merci pour ta réponse rapide.

Malheureusement ce n'est pas tout à fait cela que je souhaite faire.

Mon but est de:
- comparer les colonnes "colonne1 old" avec "colonne1 new" => soit ici les colonnes B et D du coup
ton
CompareCol i, i + 1
devient CompareCol i,i+2

Je souhaite mettre à jours la colonne B avec les données de la colonne D ; donc s'il y à une différence je veux que le commentaire de la cellule de la colonne B s'incrémente dans la valeur de cette même cellule et que le nouveau commentaire de la cellule de la colonne D soit inscrite dans la cellule de la colonne B

==> un exemple la cellulle B9 à un commentaire "04/08/2017 : ancien commentaire" dans cette cellule il y a écrit "ref old col 1,3" et dans la cellule D9 il y à écrit "ref new col 1,6". Les valeurs des cellules B9 et D9 sont bien différentes, et il y à déjà un commentaire en B9 donc:

=> dans la variable1 je met "ref new col 1,6"
=> dans la variable2 je met "ref old col 1,3"
=> dans la variable3 je met "04/08/2017 : ancien commentaire"

==> dans le commentaire de B9 je met donc : date du jour + variable2 + à la ligne + variable3 soit : "07/08/2017 : ref old col 1,3
04/08/2017 : ancien commentaire
"
==> dans la cellule B9 je met donc la nouvelle valeur : variable1 soit : "ref new col 1,6"​

J'espère que je me suis mieux exprimé cette fois-ci ?
Je vais regarder plus ton code et essayer de le comprendre pour ainsi essayer de le modifier.
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko