Programmation VBA sur Excel

Résolu
moi JB Messages postés 167 Statut Membre -  
moi JB Messages postés 167 Statut Membre -
Bonjour,
Je voudrais créer un code sur Excel (office 2007). Lorsque je remplis une cellule, il crée une nouvelle feuille et ajoute le contenue des cellules à celles de la nouvelle feuille.

Je m'explique : La première feuille serai une sorte d'ajout rapide ne contenant que des infos sommaires (nom, prenom, tel.). Je voudrais que lorsque je remplis une cellules (ou coche une case peut importe), il crée une nouvelle feuille et entre automatiquement le nom, prenom et tel. Par la suite, je pourrais venir completer cette feuille et ajouter des informations (ex : adresse, age ....)

Voila, j'éspère avoir été clair.
J'ai quelques notions de base en programmation VBA (1er année IUT mesure physique), mais j'ai toujours travaillé avec des userForm ou des code, mais jamais directement sur des cellules Excel.

Merci de votre aide
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. herod1983 Messages postés 200 Statut Membre 5
     
    Salut

    Je t'ai rajouté des truc comme le remplacement du nom de la nouvelle feuille créée, par le nom et le prénom de la personne que tu veux référencer et le déplacement de la nouvelle feuille en dernier.
    Tu peux les effacer si ta t'intéresse pas sa n'affectera pas le code.

    A mettre dans un bouton ou dans Worksheet_SelectionChange

    voila

    Sub essai()

    ' si la derniere cellule est rempli par exemple TEL
    ' en cellule A3 alors
    If Sheets("feuil1").Range("A3").Value <> "" Then
    Sheets.Add ' crée une nouvelle feuille

    'nom de la nouvelle feuille est le prénom et le nom
    'cellule A1 et A2 de feuil1
    ActiveSheet.Name = Sheets("feuil1").Range("A1").Value & " " & Sheets("feuil1").Range("A2").Value

    'déplace la nouvelle feuille en dernière position
    ActiveSheet.Move After:=Sheets(Worksheets.Count)

    'copie les valeurs des cellules A1 A2 et A3 nom prénom Tel
    'vers la nouvelle feuille en cellule A1 A2 et A3
    ActiveSheet.Range("A1").Value = Sheets("feuil1").Range("A1").Value
    ActiveSheet.Range("A2").Value = Sheets("feuil1").Range("A2").Value
    ActiveSheet.Range("A3").Value = Sheets("feuil1").Range("A3").Value

    End If

    End Sub
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Boujour,
    Pour rendre la fonction de herod1983 automatique (sans bouton) tu peu ajouter le code ci-dessous dans le module de la feuil1 (si c'est la 1ère)
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static AncAdress As String, AncCell As Variant
        If AncAdress <> "" And Target.Count = 1 Then 'pour 1ère initialisation.
            If AncCell <> Range(AncAdress) And Range(AncAdress).Column = 1 Then
                'La cellule que l'ont vient de quitter était en colonne A
                'et a été modifiée.
                'Mettre l'action à exécuter.
                Call essai()
            End If
        End If
        AncAdress = Target.Address
        AncCell = Target.Value2
    End Sub

    C'est à adapter, dans l'exemple il faut modifier la cellule de la colonne A en dernier si tu veux que les 3 cellules soient copiées.
    A+
    0
  3. herod1983 Messages postés 200 Statut Membre 5
     
    Pas mal du tout j'aime bien, j'ai juste eu un coup déboguage,
    quand la nouvelle feuille a été créée, je reviens à la première et j'éfface les valeurs des cellules.

    Normalement sa n'aurait pas du le faire vu que tu as rentré cette condition If AncAdress <> "", j'ai juste rajouté
    on error resume next, la condition d'erreur saute cela appelle la macro et s'arrete sur la condition
    If Sheets("feuil1").Range("A3").Value <> ""

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static AncAdress As String, AncCell As Variant
    If AncAdress <> "" And Target.Count = 1 Then 'pour 1ère initialisation.
    On Error Resume Next
    If AncCell <> Range(AncAdress) And Range(AncAdress).Column = 1 Then
    'La cellule que l'ont vient de quitter était en colonne A
    'et a été modifiée.
    'Mettre l'action à exécuter.
    Call essai()
    End If
    End If
    AncAdress = Target.Address
    AncCell = Target.Value2
    End Sub

    0
  4. moi JB Messages postés 167 Statut Membre 35
     
    Salut,

    J'ai essayé les codes que vous m'avez evnoyé, ca marche à merveille. Ils sont très claire, très lisible.
    Merci beaucoup.
    0