Copie de la valeurs de la première ligne dans une colonne

Bonjour à tous!

Je commence à mieux comprendre les macro de base mais, malgré mes nombreuses recherche sur le net, je n'y arrive pas!!

J'ai créer un InputBox qui me sert à déterminer la valeur qui va apparaître en position A5.

Ensuite je veux que la macro copie cette valeur automatiquement sur toute la colonne A tout en autant qu'il y ai des valeurs dans la colonne E.

Tout ce que j'ai pu réaliser, c'est de copier dans la valeur dans la cellule A6. Ça va super bien, mais il me manque un bout pour compléter!

Voici ce que j'ai réussi à faire pour le moment:

Private Sub Worksheet_Activate()

Dim resultat As String
Dim DLig As Long
Dim Dossier As String

    If Range("a5") = 0 Then

        resultat = InputBox("Entrez le numéro du Bassin Versant!", "Bassin Versant")
            If resultat <> "" Then
            Dossier = "6.02.06.MT.02."
            Range("a5").Value = Dossier & resultat
            End If

    End If

    DLig = Range("e5").End(xlDown).Row + 1

    'insérer une boucle ici pour qu'il copie la valeur de la cellule A5 sur toutes les lignes non vide de la colonne A

    Range("a5").Copy Destination:=Range("a6")

End Sub

Merci d'avance pour votre aide!

Bonsoir Bassmart, bonsoir le forum,

Peut-être comme ça :

Private Sub Worksheet_Activate()
Dim resultat As String
Dim DLig As Long
Const Dossier As String = "6.02.06.MT.02."
Dim PL As Range

If Range("a5") = 0 Then
    resultat = InputBox("Entrez le numéro du Bassin Versant!", "Bassin Versant")
    If resultat <> "" Then
        DLig = Range("E5").End(xlDown).Row
        Set PL = Range("A5:A" & DLig)
        PL.Value = Dossier & resultat
    End If
End If
End Sub

Merci beaucoup!

Ça fonctionne vraiment bien!

Petite question: Lorsque je rajoute des données à la suite de mon tableau, est-ce que la macro peux faire la même opération pour les nouvelles entrées??

Ça pourrait-être activé lorsque j'ouvre la feuille une nouvelle fois!

Encore merci!

Bonsoir Bassmart, bonsoir le forum,

Petite réponse : je n'ai rien compris à ta question. Un exemple illustrant celle-ci serait le bienvenu...

Effectivement, se n'était pas très clair!

Bon, je recommence! De la façon que ça fonctionne présentement, c'est qu'a chaque fois que j'ouvre la feuille Coordonnées, il vérifie si la cellule A5 est égale à 0. Si oui, il continue avec InputBox et copie la valeur de la cellule A5 dans toutes les lignes de la colonne A à condition qu'il y ai des données dans la colonne E.

Si la valeur dans la cellule A5 est différente de 0 , elle ne fait rien!

Alors voici le problème!

Je peux ajouter des données dans mon tableau dans la colonne E après avoir fait cet opération (macro) pour la première fois, parce que dès que la valeur en A5 n'est plus égale à 0, la macro ne fait plus rien. Alors,moi ce que je voudrais, c'est que la valeur en A5 ce retrouve (copié) aussi à la suite de ma colonne A.

Est-ce que je devrais pensé à faire une fonction "If not" pour qu'il continue à copié les valeurs dans ma colonne A quand j'ai des données dans la colonne E?

Merci!

En fait, après quelques recherche, c'est peut-être plus une fonction "Else" ou "ElseIf"!

25test-coord.zip (22.87 Ko)

Bonsoir Bassmart, bonsoir le forum,

Une solution, mais il faut sortir de l'onglet Coordonnées et revenir pour la mise à jour :

Private Sub Worksheet_Activate()
Dim resultat As String
Dim DLig As Long
Const Dossier As String = "6.02.06.MT.02."
Dim PL As Range

DLig = Range("E5").End(xlDown).Row
Set PL = Range("A5:A" & DLig)
If Range("A5") = 0 Then
    resultat = InputBox("Entrez le numéro du Bassin Versant!", "Bassin Versant")
    If resultat <> "" Then
        PL.Value = Dossier & resultat
    End If
Else
    PL.Value = Range("A5").Value
End If
Range("A5").Select
End Sub

Une autre solution automatique avec deux événementielles :

Private DLig As Long
Private PL As Range

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Row < 5 Or Target.Column <> 5 Then Exit Sub
If Target.Value = "" Then Cells(Target.Row, 1).ClearContents
If Range("A5") <> "" Then
    DLig = Range("E5").End(xlDown).Row
    Set PL = Range("A5:A" & DLig)
    PL.Value = Range("A5").Value
End If
End Sub

Private Sub Worksheet_Activate()
Dim resultat As String
Const Dossier As String = "6.02.06.MT.02."

If Range("a5") = 0 Then
    resultat = InputBox("Entrez le numéro du Bassin Versant!", "Bassin Versant")
    If resultat <> "" Then
        DLig = Range("E5").End(xlDown).Row
        Set PL = Range("A5:A" & DLig)
        PL.Value = Dossier & resultat
    End If
End If
End Sub

Merci beaucoup ThauThème!!

J'ai pris le deuxième code et ça fonctionne très bien! Un autre problème de résolu!

Encore merci!

Rechercher des sujets similaires à "copie valeurs premiere ligne colonne"