Récupération ligne et colonne d'un autofill

Bonjour

Est t il possible de récupérer les coordonnées lignes et colonnes d'un autofill dans des variables de type range ou integer ?

Merci pour vos efforts ils me sont très utile

Guillaume

Bonjour,

Bien que ta question ne soit pas excessivement claire ... j'ai tendance à te dire que, d'une façon ou d'une autre ..., ce sera possible ...

L'idéal ... comme toujours ... joindre un fichier test ...

En fait je me pose cette question car j'ai concocté un petit code (grâce à l'aide des membres excel_pratique) qui consiste

à remplir des lignes de couleur différente en fonction de la valeur d'une cellule situé en colonne L.

Celui ci marche parfaitement.

Cependant, lorsque je copie une cellule en "L:L" à l'aide de l'autofill (je ne sais pas si ça se dit) ou quand je copie la cellule sur

plusieurs lignes à l'aide du coin inférieur droit de la cellule, le code ne fonctionne pas.

Exemple : je prend la cellule L3 avec la valeur "FINT", a l'aide du coin inférieur droit de la cellule, je copie jusqu'en L5, j'aimerais que les lignes L3 L4 et L5 passe en vert avec mise en place des dates. Or seulement la L3 se modifie.

Merci de prendre le temps de regarder.

J'essaye de trouver le code adéquat depuis un petit moment mais la je sèche....

Guillaume

131.xlsm (18.27 Ko)

J'ai enfin réussi à avoir un peu de résultat. Mais il me semble que c'est un peu (BEAUCOUP !!!!) de bricolage !!

Par exemple, je suis obliger de réinitialiser ma variable "i" de boucle for à 0.

Et çà je ne comprend vraiment pas pourquoi !!!

81.xlsm (21.59 Ko)

Re,

Bravo ... pour les avancées ...

Cela dit ... je viens de rapidement regarder ton code ...

Si tu le permets... quelques rapides remarques :

1. les macros standard doivent être dans un module standard ... et pas dans le module de la feuille ...

2. les macros évènementielles fonctionnent avec Target ... et pas avec ActiveCell.. .

3. Dans ta macro Etat ... il faut te méfier de ta façon d'utiliser ActiveCell ... c'est la cellule active ... donc dans une boucle ... ???

Dès que j'ai un petit moment .... je creuserai plus avant ...

Re,

Je n'ai pas eu le temps de tester ...

Private Sub Worksheet_change(ByVal Target As Range)
If Target.Column <> 12 Then Exit Sub
If Target.Count > 1 Then Exit Sub
Dim i As Long
For i = 1 To Selection.Count
   If Selection(i, 1) = "" Then
     If MsgBox("Etes vous certain de supprimer l'état et les dates ?", vbYesNo, "Demande de confirmation") = vbYes Then Call Etat
   Else
     Call Etat
   End If
Next i
End Sub

En espèrant que cela t'aide ...

Bonjour,

le plus propre serait :

Private Sub worksheet_change(ByVal Target As Range)
    Dim pl As Range
    Set pl = Intersect(Target, Columns(12))
    If Not pl Is Nothing Then
    For Each c In pl
        ' traitement
        ' ...
    End If
End Sub

et donner paramètre à etat() c ou sa ligne

eric

@ eric,

J'ai simplement repris de quoi borner la sélection ...faite par l'utilisateur ...

Est-ce-que Target va le faire ... ?


Re,

Sans modifier la procédure Etat() ...

je viens de tester les deux formes d'évènementielles ... qui ne fonctionnent ni l'une ni l'autre ...

la mienne balaie l'ensemble des cellules concernées sans problème constaté.

Je réduis en plus la sélection pour qu'un collage ou un 'tirer' concernant plusieurs colonnes ne mette pas le bazar.

Un Stop suffit pour s'en assurer.

Balayer Selection le fait aussi.

Re,

Je me suis mal exprimé ... c'est la macro Etat ... qui n'a pas l'air ... dans son état ...

Merci beaucoup d'avoir pris le temps !

Ducoup il faut que je revois toute la macro "Etat" parce qu’effectivement, elle est dans un sale état !!

Merci et à bientôt dans de prochaines aventures

Bye

Guillaume

Salut HxDice,

Bonsoir l'équipe,

100 ans après la guerre, la vie de famille n'étant pas vraiment un long fleuve tranquille... ... et si j'ai gardé le fil...

For x = iRow To iRow + iRowC - 1
    Select Case sEtat
        Case "FINT"
            Cells(x, 4).Resize(1, 21).Interior.Color = 5296274
            If Cells(x, 14) = "" Then Cells(x, 14) = Date
            If Cells(x, 13) = "" And Cells(x, 14) <> "" Then Cells(x, 13) = Date
        Case "ENCO"
            Cells(x, 4).Resize(1, 21).Interior.Color = 49407
            Cells(x, 14) = ""
            If Cells(x, 13) = "" Then Cells(x, 13) = Date
        Case ""
            Cells(x, 4).Resize(1, 21).Interior.Color = RGB(255, 255, 255)
            Cells(x, 13).Resize(1, 2) = ""
    End Select
Next

A+

41.xlsm (20.65 Ko)

Re,

complément de ma proposition

Private Sub worksheet_change(ByVal Target As Range)
    Dim pl As Range
    Set pl = Intersect(Target, Columns(12))
    If Not pl Is Nothing Then
        If MsgBox("Etes vous certain de supprimer l'état et les dates ?", vbYesNo, "Demande de confirmation") = vbYes Then
            Etat pl
        End If
    End If
End Sub

Sub Etat(pl As Range)
    Dim c As Range
    For Each c In pl
        c.Offset(, -7).Resize(, 20).Interior.Color = Switch(c = "FINT", 5296274, c = "ENCO", 49407, c = "", xlNone)
        If c = "FINT" Then
            If c.Offset(, 2) = "" Then
                c.Offset(, 2) = Date
            ElseIf c.Offset(, 1) = "" Then
                c.Offset(, 1) = Date
            End If
        ElseIf c = "ENCO" Then
            c.Offset(, 2).ClearContents
            If c.Offset(, 1) = "" Then c.Offset(, 1) = Date
        ElseIf c = "" Then
            c.Offset(, 1).Resize(, 2).ClearContents
        End If
    Next c
End Sub

pour etat() je ne suis sûr de rien à cause des bizarreries (pour être poli ) de ton modèle.

Il y aura peut-être des fonctionnements à reprendre à la marge, ce qui compte c'est le principe.

eric

eric

Rechercher des sujets similaires à "recuperation ligne colonne autofill"