Blocage sur macro

Résolu
kazede -  
lermite222 Messages postés 9042 Statut Contributeur -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Les cellules que tu copie.. c'est des formules ?
    La copie des formats est conforme ?
    1
  3. kazede
     
    Bonjour michel_m,

    Elle est créée manuellement.
    1
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kazede
     
    Bonjour,
    Sa ne marche malheuresement pas, il me colle des "VRAI" partout au lieu des informations.
    0
  7. kazede
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      Ta mise en forme est elle créer manuellement ou par une MFC (Mise en Forme Conditionnelle)
      0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  9. kazede
     
    Sa fonctionne parfaitement!

    Merci à vous 2 pour votre aide!
    0