Problème formule VBA - Fonction AND

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 !

GuillaumA

XLDnaute Occasionnel
Bonjour à tous,

Voila j'ai un petit soucis à définir i dans ma macro. Quelqu'un peut m'aider à reformuler ?
Merci!

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Copie les cellules de la colonne C dans la colonne E, une ligne au dessus. Ceci toute les 3 lignes dans les intervalles définies par i

Dim i As Integer

For i = 8 To 44 & 49 To 100 & 105 To 168 & 173 To 212 & 217 To 250 & 255 To 297 & 302 To 338 & 343 To 382 & 387 To 450 & 455 To 485 & 490 To 523 & 528 To 564) Step 3

If ActiveCell.Row = i And ActiveCell.Column = 3 Then
ActiveCell.Offset(-1, 2) = IIf(ActiveCell.Offset(-1, 2) = "", ActiveCell, "")
ActiveCell.Offset(3, 5).Select
Exit For
End If
Next
End Sub

Cordialement,
Guillaume A.
 
Dernière édition:
Re : Problème formule VBA - Fonction AND

Bonjour toto


Yep =)

et que ça copie le contenu dans la colonne E , une ligne au dessus de la ligne ou l'on sélectionne C

A masterdisco: J'ai adapté ta macro comme cela:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Copy

Dim i As Integer
A = Array("C8:C44", "C49:C100", "C105:C168", "C173:C212", "C217:C250", "C255:C297", "C302:C338", "C343:C382", "C387:C450")
For i = 8 To UBound(A) Step 3


If ActiveCell.Row = i And ActiveCell.Column = 3 Then
ActiveCell.Offset(-1, 2) = IIf(ActiveCell.Offset(-1, 2) = "", ActiveCell, "")
ActiveCell.Offset(3, 5).Select
Exit For
End If
Next
End Sub
Il semble qu'il ne reconnaisse pas A du fait d'ensemble défini. Je sais que cela marche avec des valeurs simples comme ton exemple montre mais... cela marche t'il avec des ensembles de valeurs et si oui comment l'intégrer ?
Cordialement,
Guillaume A.
 
Dernière édition:
Re : Problème formule VBA - Fonction AND

Bonjour,

à tester :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Tablo(1 To 9, 1 To 2) As Long, i As Long, LignOK As Long
    If Target.Column <> 3 Then Exit Sub
    Tablo(1, 1) = 8: Tablo(1, 2) = 44
    Tablo(2, 1) = 49: Tablo(2, 2) = 100
    Tablo(3, 1) = 105: Tablo(3, 2) = 168
    Tablo(4, 1) = 173: Tablo(4, 2) = 212
    Tablo(5, 1) = 217: Tablo(5, 2) = 250
    Tablo(6, 1) = 255: Tablo(6, 2) = 297
    Tablo(7, 1) = 302: Tablo(7, 2) = 338
    Tablo(8, 1) = 343: Tablo(8, 2) = 382
    Tablo(9, 1) = 387: Tablo(9, 2) = 450
    LignOK = 0
    For i = 1 To UBound(Tablo, 1)
        If Target.Row >= Tablo(i, 1) And Target.Row <= Tablo(i, 2) Then
            If (Target.Row - Tablo(i, 1)) Mod 3 = 0 Then
                LignOK = i
            End If
        End If
    Next i
    If LignOK > 0 Then
        Target.Offset(-1, 2).Value = IIf(Target.Offset(-1, 2).Value = "", Target.Value, "")
    End If
End Sub
 
Re : Problème formule VBA - Fonction AND

Bonjour toto,
Ta solution est excellente et marche parfaitement!

Il faut juste la modifier pour pouvoir en re-cliquant sur la même cellule faire effacer le texte en colonne E sans devoir sélectionner une autre cellule avant les deux étapes.

Je m'en charge =)

Merci pour tout!

@++

Guillaume
 
Dernière édition:
- 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

Retour