Début en VBA

Résolu/Fermé
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020 - 15 mai 2020 à 22:04
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020 - 19 mai 2020 à 00:11
Bonjour,

Motivé par l'envie d'avancer dans un projet dépassant le simple cadre d'Excel, je me rends bien compte que sans la programmation de macros je ne pourrais progresser.
Je débute donc en VBA tout récemment ... j'ai commencé hier soir.
J'ai surtout commencé à fouiller le Net sans savoir où ni quoi chercher précisément.
La seule constance étant que je sache quel résultat je souhaite obtenir dans Excel.

Pour l'instant, mon objectif est d'arriver à recopier les cellules de la feuille1 vers la feuille2 sans avoir d'aller/retour visuel entre chaque feuille. à chaque copie de cellule.

J'ai compris qu'il faut donc éviter le
Worksheets("feuille1").Select


Lors de la programmation, je souhaite que la cellule 'destination' prenne la couleur de la cellule 'source' :

Sheets("feuille2").Cells(4, 1).Interieur.Color = Sheets("feuille1").Cells(4, 1).FormatConditions(1).interior.Color


La cellule destination prends bien une couleur au lancement de la macro, mais pas la couleur de la cellule feuille source. Il faut savoir que la couleur de la cellule source est issue d'une mise en forme conditionnelle. Cela a-t-il une cause à effet ?

Avez-vous une explication ? et surtout un coup de pouce à me proposer ?

Vous remerciant par avance.

7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
16 mai 2020 à 06:46
Bonjour,

destination prends bien une couleur
Par quel miracle, si cellule source n'a pas de couleur?

source est issue d'une mise en forme
Quelle est cette mise en forme?
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
17 mai 2020 à 14:01
Bonjour F894009,

la cellule source a un mise en forme conditionnelle définie dans Excel, selon la valeur de la case, 1=vert, 2 =rouge, 3 = orange.

En utilisant le code corrigé : (Merci Mike -31)

Sheets("Feuil2").Cells(4, 1).Interior.Color = Sheets("Feuil1").Cells(4, 1).FormatConditions(1).Interior.Color


Lorsque dans la Feuil1 j'ai ma case en vert, une fois la macro lancée je n'obtient pas du rouge dans la Feuil2
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
16 mai 2020 à 08:11
Bonjour,

J'ajouterais que le VBA est un langage à utiliser sans la moindre erreur ce qui bloque le code voir les fonctions d'Excel
il est possible d'écrire un code de diverses façons à condition de respecter les règles strictes du langage
si on analyse ta formule
Sheets("feuille2").Cells(4, 1).Interieur.Color = Sheets("feuille1").Cells(4, 1).FormatConditions(1).interior.Color
plusieurs erreurs
Sheets("feuille2") feuille2 doit être le nom exact de l'onglet si tu ne l'as pas renommé c'est Feuil2
ensuite tu écris Interieur.Color c'est Interior
pour commencer je te conseille d'écrire en minuscule et si les termes sont juste la premièer occurrence se mettra automatiquement en majuscule
quelques exemples pour écrire ta ligne de code


Sheets("Feuil2").Cells(4, 1).Interior.Color = Sheets("Feuil1").Cells(4, 1).Interior.Color
ou
Sheets("Feuil2").Range("A4").Interior.Color = Sheets("Feuil1").Range("A4").Interior.Color
ou
Sheets(2).Range("A4").Interior.Color = Sheets(1).Range("A4").Interior.Color
ou encore
Sheets(2).[A4].Interior.Color = Sheets(1).[A4].Interior.Color
ou encore avec des plages nommées
[Cible2].Interior.Color = [Cible1].Interior.Color

si je peux me permettre, pour commencer en VBA il faut se fixer un objectif simple et utiliser un support papier avec des explications assez claire comme VBA pour les Nuls que je trouve pas trop mal écrit et facile à se repérer et qui ne mérite pas ce titre
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
17 mai 2020 à 14:06
Merci beaucoup Mike-31 pour ta réponse rigoureuse, avec plusieurs solutions et explications.
J'ai compris les 3 premières possibilités d'écriture mais je pense que pour la 4° il me manque la notion nécessaire à nommer une plage en VBA. (à moins que la plage ne soit nommée via Excel ... il faut que je teste)

VBA pour les nuls ... assurément un bon début pour moi, je vais regarder ;)
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é le 16 mai 2020 à 09:54
Bonjour à tous

Pour apprendre le VBA, il existe ce site particulièrement pédagogique et décontracté même s''il date (XL2003)
http://www.http//www.info-3000.com/vbvba/


mais n'oublie pas ce dicton excellien:

AVANT DE PENSER VBA, PENSER EXCEL

Tu trouveras aussi des topos sur VBA Excel ici (niveau plus élevé)
http://www.https//excel.developpez.com/cours/?page=prog#environnement


En ce qui concerne ton problème actuel
il faut que tu recopies les conditions de mise en couleur sur la cellule cible (il y a mieux avec une macro parametrée mais c'est un 2° niveau)
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
17 mai 2020 à 14:12
Merci Michel pour ces liens. Info-3000 va devenir pour un temps ma page de chevet :)
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
17 mai 2020 à 23:38
Bonsoir Michel_m.
Je me suis inscrit sur Developpez.com... Une mine d'or là aussi.
Merci beaucoup.
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
17 mai 2020 à 14:18
Bonjour à tous,

Je ne peux pas recopier simplement la valeur de cellule source vers la cellule destination et appliquer sur la cellule destination la même mise en forme conditionnelle.
Mon objectif final est de recopier la couleur d'une cellule source vers ma cellule destination (mon premier post) et la seconde étape sera de recopier la valeur d'une autre cellule source toujours vers ma même cellule destination.
> Copier Feuil1 couleur A1 vers Feuil2 A1
> Copier Feuil1 valeur A2 vers Feuil2 A1

Merci à vous pour les réponses que vous m'avez apportées.
0

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

Posez votre question
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
17 mai 2020 à 15:12
Re,

Là aussi plusieurs façon d'écrire le code, essaye comme cela

Sheets("Feuil2").Range("A1") = Sheets("Feuil1").Range("A2").Value
Sheets("Feuil2").Range("A1").Interior.Color = Sheets("Feuil1").Range("A1").Interior.Color

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
18 mai 2020 à 07:28
Bonjour,

attention que .FormatConditions(1).interior.Color te fourni la couleur définie pour la MFC, mais pas celle de la cellule. La MFC peut être appliquée... ou pas.
Pour avoir le résultat de toutes les MCF, appliquées ou pas, c'est :
.DisplayFormat.Interior.Color

eric
0
captainfrag22150 Messages postés 7 Date d'inscription vendredi 15 mai 2020 Statut Membre Dernière intervention 19 mai 2020
19 mai 2020 à 00:11
Merci Eric, c'est exactement cela.

Sheets("Feuil2").Cells(4, 1).Interior.Color = Sheets("Feuil1").Cells(4, 1).DisplayFormat.Interior.Color
0
BrainyCucumber Messages postés 14 Date d'inscription jeudi 14 mai 2020 Statut Membre Dernière intervention 16 mai 2020
Modifié le 16 mai 2020 à 12:35
Bonjour :)

Pourquoi ne pas copier simplement la valeur et affecter la même mise en forme conditionnelle dans la feuille2 ?

Cela donnerait simplement :

Sheets("feuille2").range("A1") = Sheets("feuille1").range("A1")

Et par ce biais vous obtiendrez avec la même mise en formes conditionnelles, la même couleur.
-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
16 mai 2020 à 13:38
Bonjour,
Solutions déjà données ce matin : lire les post précédents ...
0