Blocage sur macro

Résolu
Bonjour,

Mon problème est le suivant:

Aujourd'hui la macro va scanner une colonne précise sur une feuille2 pour vérifier si une valeur de la feuille 1 est bien présente dans cette colonne. Si c'est le cas, la macro prend certaines cellules sur la ligne où la valeur de la feuille 2 est trouvée, pour les copier en feuille 1.

Seulement voila, la macro aujourd'hui ne copie que les valeurs des cellules, hors j'ai besoin qu'elle copie également la mise en forme des cellules (couleurs, bordures, etc). Comment m'y prendre? Voici la macro (faite par michel_m, membre du forum).

Sub comparer() 
Dim cellule As Range 
Dim lig As Long, ligne As Long 

'fige le défilement de l'écran 
Application.ScreenUpdating = False 
With Sheets("tableau de suivi") 
    For Each cellule In .Range("BG9:BG265") 
        'utilisation d'une fonction feuille Excel NB.SI --> si la valeur de la cellule est dans la colonneAZ de "tableau de suivi 2" 
        If Application.CountIf(Sheets("tableau de suivi 2").Columns("AZ"), cellule) > 0 Then 
            'trouve la ligne dans "tableau de suivi 2" 
            lig = Sheets("tableau de suivi 2").Columns("AZ").Find(cellule, Range("AZ1"), xlValues).Row 
            'ligne de la cellule en cours dans "tableau de suivi" 
            ligne = cellule.Row 
            'reporte les valeurs tableau de suivi 2 vers tableau de suivi 1 
            .Range("BH" & ligne & ":CB" & ligne).Value = Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).Value 
        End If 
    Next 
End With 
End Sub 


Merci d'avance.

8 réponses

  1. Contributeur
    Bonjour,
    Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).copy .Range("BH" & ligne)

    Pourrait y avoir une erreur, faudra alors séparer les actions.
    Tu dis
    A+
    1
    1. Contributeur
      Les cellules que tu copie.. c'est des formules ?
      La copie des formats est conforme ?
      1
      1. Bonjour michel_m,

        Elle est créée manuellement.
        1
        1. Contributeur
          Bonjour Michel, le pasteSpecial ne fonctionne pas en direct avec copy.
          Mais tu à raison, faire en deux fois mais avec une petite inversion.
          Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).copy .Range("BH" & ligne)
          .Range("BH" & ligne & ":CB" & ligne).Value = Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).Value

          Tu dis, si ça ne va pas j'ai encore une autre solution.
          1
          1. Contributeur
            Bonjour,
            le pasteSpecial ne fonctionne pas en direct avec copy.

            pourtant, essaies cette démo tirée de mon grenier
            https://www.cjoint.com/?0czmKZaiBuT

            Bon après midi
            0
          2. Contributeur
            Re,
            C'est comme j'ai dis.
            Dans ton grenier, ton exemple passe par une CIBLE, Pas ton poste précédant.
            Essaye en direct comme tu l'indique plus haut.
            0
        2. Bonjour,
          Sa ne marche malheuresement pas, il me colle des "VRAI" partout au lieu des informations.
          0
          1. Les cellules que tu copie.. c'est des formules ?

            Il y a des formules dans une partie de la plage des cellules que je copie, mais si elle ne sont pas la, ce n'est pas important. Le plus important est la conservation d'un code couleur sur certaines cellules nécéssaire à la compréhension de mon document.

            La copie des formats est conforme ?

            Non, avant ta modification , je copiais uniquement la valeur des cellules, et avec ta modification, j'ai "VRAI" affiché partout où je devrais avoir mes valeurs et ma mise en forme.
            Je perds donc l'affichage des valeurs.

            Merci.
            0
            1. Contributeur
              Bonjour,

              Ta mise en forme est elle créer manuellement ou par une MFC (Mise en Forme Conditionnelle)
              0
          2. Contributeur
            Donc en 2 fois comme l'a dit Lermite

            .Range("BH" & ligne & ":CB" & ligne).Value = Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).Value 
            Sheets("tableau de suivi 2").Range("BA" & lig & ":BV" & lig).Copy 
            Range("BH" & ligne).PasteSpecial Paste:=xlPasteFormats 
            non testé... 


            en 1° ligne tu peux aussi prendre la solution de lermite
            Michel
            0
            1. Sa fonctionne parfaitement!

              Merci à vous 2 pour votre aide!
              0