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. Contributeur
      Les cellules que tu copie.. c'est des formules ?
      La copie des formats est conforme ?
      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. 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.
      2. Bonjour,
        Sa ne marche malheuresement pas, il me colle des "VRAI" partout au lieu des informations.
        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.
          1. Contributeur
            Bonjour,

            Ta mise en forme est elle créer manuellement ou par une MFC (Mise en Forme Conditionnelle)
        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