XL 2019 ecriture sur cellules actives

  • Initiateur de la discussion Initiateur de la discussion Did25
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Did25

XLDnaute Occasionnel
Bonjour le forum ,je cherche une solution pour colorier des cellules sélectionnées et en même temps écrire sur les cellules de droite un texte .
Actuellement j'utilise cette formule ,le coloriage fonctionne mais l'écriture ne se fait que sur la première cellule .Merci de votre aide
Worksheets("Modèle").Activate
Set selectedCell = Application.ActiveCell
With Selection.Interior
.Color = 5287936
End With
Set selectedCell = Application.ActiveCell
With ActiveCell.Offset(0, 1).Select
ActiveCell.Value = "Texte"
End With
End Sub
 
Solution
Re

Pour annuler une action faite avec une macro il faut par programmation refaire le code inverse que la macro à faite.
VB:
Sub AnnuleMaVersion()
Dim i&

Selection.Interior.Color = xlNone

For i = 1 To Selection.Rows.Count
    Selection(i, 2).Value = ""
Next
End Sub

*Cela n'était pas dans la question du départ... 🤔

@Phil69970
Bonjour Did,
Votre dernier activecell pointe la cellule active.
Donc remplacez cette ligne par simplement .value="texte"l
Sans oublier le point, la cellule sera alors celle définie par le with.
Et supprimez le sélect du with.
 
Bonsoir Sylvanu ,le dernier activecell.offset ,je dois l'enlever ? ,en fait sur mon fichier je selectionne les cellules de D7 à F14 et lorsque je lance ma macro celle-ci doit colorier toutes ces cellules puis inscrire un texte dans F7 à F14 . Je suis un peu perdu ,je l'avoue
 
Bonsoir Wayki ,d'après vos informations ,voilà ce que ça donne :
Worksheets("Modèle").Activate
Set selectedCell = Application.ActiveCell
With Selection.Interior
.Color = 5287936
ActiveCell.Offset(0, 1).Value = "Texte"
End With
End Sub

Malheureusement ça ne fonctionne pas ,j'ai toujours que la première cellule qui inscrit "texte",pas celles de dessous
 
Bonsoir @Did25 , @sylvanu , @Wayki

VB:
Sub test()
Dim FModèle As Worksheet
Set FModèle = Worksheets("Modèle")
Dim selectedCell As Range
    Set selectedCell = FModèle.Range(ActiveCell.Address)
With selectedCell
    .Interior.Color = 5287936 ' Cellule Active Couleur
    '.Value = "Texte" ' Cellule Active Texte
    ' Ligne juste en dessous
    '.offset(1,0).Interior.Color = 5287936  ' Juste sous la Cellule Active Couleur
    .offset(1,0).Value = "Texte"  ' Juste sous la Cellule Active Texte
End With
End Sub
 
Dernière édition:
Bonjour Tout le monde,
Une autre solution en automatique, il suffit de sélectionner une zone pour qu'elle se remplisse avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Column Mod 4 = 0 Then     ' uniquement si colonnes concernées
        Target.Interior.Color = 5287936 ' mise en couleur
        For Each c In Target            ' dans toute la zone
            If c.Column Mod 4 = 1 Then  ' si colonne de droite
                c.Value = "Texte"       ' insertion texte
            End If
        Next c
    End If
Fin:
End Sub

Mais là aussi le Ctrl Z ne marche pas, pas de Ctrl Z après l'éxécution d'une macro.
A approfondir, peut être une solution va venir.
 

Pièces jointes

Une V2 :
Si la zone sélectionnée est blanche alors vert et insertion texte, si la zone est déjà verte alors on met en blanc et on efface les textes, avec :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Interior.Color = 5287936 Then ' si couleur verte
        Couleur = 16777215                  ' alors blanc et texte vide
        Texte = ""
    Else                                    ' sinon vert et texte="Texte"
        Couleur = 5287936
        Texte = "Texte"
    End If
    If Target.Column Mod 4 = 0 Then         ' uniquement si colonnes concernées
        Target.Interior.Color = Couleur     ' mise en couleur
        For Each c In Target                ' dans toute la zone
            If c.Column Mod 4 = 1 Then      ' si colonne de droite
                c.Value = Texte             ' insertion texte
            End If
        Next c
    End If
Fin:
End Sub
 

Pièces jointes

Re

Pour annuler une action faite avec une macro il faut par programmation refaire le code inverse que la macro à faite.
VB:
Sub AnnuleMaVersion()
Dim i&

Selection.Interior.Color = xlNone

For i = 1 To Selection.Rows.Count
    Selection(i, 2).Value = ""
Next
End Sub

*Cela n'était pas dans la question du départ... 🤔

@Phil69970
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
668
Réponses
22
Affichages
3 K
Retour