XL 2010 "si" référence circulaire

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 !

Océane-33

XLDnaute Nouveau
Bonjour ,

Je n 'arrive pas à trouver la bonne formule, si vous pouviez m 'aider..
Lorsque que je remplie une cellule, si celle du dessus n 'a pas été saisie ( valeur inconnue ou oubli )
qu'elle prenne par défaut la cellule au dessus d'elle ( la dernière valeur connue )( ex je saisie en A5, la cellule A4 n 'est pas remplie donc A4=A3
1 ) je tombe sur une référence circulaire .
2 ) la formule appliquée à toutes les cellules ,dont celles à venir ( ou pas si il y a un oubli ) me marque faux..
Merci pour votre aide.
 

Pièces jointes

Solution
Re-Bonjour
En attendant, un exemple valable sur un ensemble de colonnes déterminées (avec la date en colonne A)
Enrichi (BBcode):
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si la modif ne porte que sur une cellule :
    If Target.Count = 1 Then
        With Target
            Select Case .Column
                'si la modification porte sur une des colonnes données par les N° ci-dessous
                Case 2, 3, 5, 10 To 13, 15 To 21
                    'Si la cellule de la colonne A est une date (sur la même ligne)
                    If VarType(.Offset(, -(.Column - 1))) = vbDate Then
                        Application.EnableEvents = False...
Bonjour à toutes & à tous, bonjour @Océane-33
Difficile de traiter ton cas avec une formule dans la colonne B et sans référence circulaire ...
Mais tu peux essayer avec l'événement "Change" de ta feuille (Target étant la cellule objet de changement)
Dans le code de la feuille :
Enrichi (BBcode):
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si la modif ne porte que sur une cellule en colonne B (2) :
    If Target.Count = 1 And Target.Column = 2 Then
        'Si la cellule voisine dans la colonne A est une date :
        If VarType(Target.Offset(0, -1)) = vbDate Then
            Application.EnableEvents = False
            'Si la celule du dessus est vide, la remplir avec la valeur de la cellule 2 lignes au-dessus :
            If Target.Offset(-1) = "" Then Target.Offset(-1) = Target.Offset(-2)
            Application.EnableEvents = True
        End If
    End If
End Sub
Faire Alt F11 pour voir le code VBA:
1649667417253.png


Voir le fichier joint
Amicalement
Alain
 

Pièces jointes

Re-Bonjour
En attendant, un exemple valable sur un ensemble de colonnes déterminées (avec la date en colonne A)
Enrichi (BBcode):
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si la modif ne porte que sur une cellule :
    If Target.Count = 1 Then
        With Target
            Select Case .Column
                'si la modification porte sur une des colonnes données par les N° ci-dessous
                Case 2, 3, 5, 10 To 13, 15 To 21
                    'Si la cellule de la colonne A est une date (sur la même ligne)
                    If VarType(.Offset(, -(.Column - 1))) = vbDate Then
                        Application.EnableEvents = False
                        'si la cellule du dessus est vide, la remplir avec la valeur de la cellule 2 lignes au-dessus
                        If .Offset(-1) = "" Then .Offset(-1) = .Offset(-2)
                        Application.EnableEvents = True
                    End If
                Case Else
                     Exit Sub
            End Select
        End With
    End If
End Sub

Amicalement
Alain
 

Pièces jointes

Re-Bonjour
En attendant, un exemple valable sur un ensemble de colonnes déterminées (avec la date en colonne A)
Enrichi (BBcode):
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si la modif ne porte que sur une cellule :
    If Target.Count = 1 Then
        With Target
            Select Case .Column
                'si la modification porte sur une des colonnes données par les N° ci-dessous
                Case 2, 3, 5, 10 To 13, 15 To 21
                    'Si la cellule de la colonne A est une date (sur la même ligne)
                    If VarType(.Offset(, -(.Column - 1))) = vbDate Then
                        Application.EnableEvents = False
                        'si la cellule du dessus est vide, la remplir avec la valeur de la cellule 2 lignes au-dessus
                        If .Offset(-1) = "" Then .Offset(-1) = .Offset(-2)
                        Application.EnableEvents = True
                    End If
                Case Else
                     Exit Sub
            End Select
        End With
    End If
End Sub

Amicalement
Alain
 
- 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
13
Affichages
912
Réponses
3
Affichages
267
Réponses
2
Affichages
388
Retour