Blocage sur macro

Résolu/Fermé
kazede - Modifié par kazede le 24/02/2011 à 13:45
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 25 févr. 2011 à 19:08
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.


A voir également:

8 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
24 févr. 2011 à 13:50
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 févr. 2011 à 10:01
Les cellules que tu copie.. c'est des formules ?
La copie des formats est conforme ?
1
Bonjour michel_m,

Elle est créée manuellement.
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
25 févr. 2011 à 12:19
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
25 févr. 2011 à 12:37
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 25/02/2011 à 19:39
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
Sa ne marche malheuresement pas, il me colle des "VRAI" partout au lieu des informations.
0
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
25 févr. 2011 à 11:45
Bonjour,

Ta mise en forme est elle créer manuellement ou par une MFC (Mise en Forme Conditionnelle)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 25/02/2011 à 12:10
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
Sa fonctionne parfaitement!

Merci à vous 2 pour votre aide!
0