Création d'une nouvelle feuille Excel soumise à condition

Fermé
Thalia31 Messages postés 3 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013 - 13 févr. 2013 à 11:14
Thalia31 Messages postés 3 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013 - 13 févr. 2013 à 12:12
Bonjour à tous,

Je viens vous demander un peu d'aide ; débutante en VBA, je souhaite créer une macro pour simplifier la création de nouvelles feuilles Excel.

Ma base de données "A1-Liste" contient les noms de personnes que je veux joindre par téléphone.
Si j'arrive à avoir un entretien téléphonique avec cette personne (date de contact dans la colonne N), je veux créer automatiquement un nouvel onglet portant le nom de la personne (contenu dans la colonne A) --> le but est de résumer le contenu de ma conversation avec cette personne dans l'onglet ainsi créé.

En parcourant les forums, j'ai réussi à bidouiller le code ci-dessous. Le problème c'est qu'il ne se passe..........rien !

Pourriez-vous m'aider svp ?
Merci beaucoup !!


Sub Ajout_Feuil()

' Si la personne a été contactée (colonne N non vide)
Sheets("A1 - Liste").Range("N3").Select
If Range("N3").Value <> "" Then

' On choisit la colonne A pour nommer les nouvelles feuilles à créer
Dim oFeuille As Worksheet
Sheets("A1 - Liste").Range("A3").Select
Set plg = Range("A3", Range("A3").End(xlDown))

Application.ScreenUpdating = False

For Each cel In plg.Cells

If cel.Value <> "" Then
On Error Resume Next ' pour éviter erreur si elle n'existe pas
Set oFeuille = Sheets(cel.Value)
On Error GoTo 0 ' retour à la normale
If oFeuille Is Nothing Then

' Création d'une nouvelle feuille portant le nom de la personne contactée
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = cel.Value
End If
End If
Set oFeuille = Nothing
Next

End If

End Sub
A voir également:

4 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
13 févr. 2013 à 11:38
Bonjour,

Il ne se passe rien.

Doit-on comprendre que lorsqu'on lance la macro, rien ne se passe ou bien que la macro ne se lance pas ?



A+
0
Thalia31 Messages postés 3 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013
13 févr. 2013 à 11:43
Bonjour Pilas,

A priori la macro se lance bien, car si j'ai des messages d'erreurs qui s'affichent si je fais une erreur dans la syntaxe.

En fait, selon les "bidouillages" que je fais, soit la macro se lance mais rien ne se passe, soit la macro se lance et créé des onglets pour tous les noms contenus dans la colonne A... y compris ceux pour lesquels la colonne N est vide.

J'en conclue que le problème doit venir de ma syntaxe sur la condition "colonne N non vide"
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 13/02/2013 à 12:03
Oui il faut légérement modifier la macro car elle ne tient pas compte de la valeur de la colonne N pour chaque ligne mais une fois pour toute :
Voici une proposition de modification :
Sub Ajout_Feuil()  
' On choisit la colonne A pour nommer les nouvelles feuilles à créer  
Dim oFeuille As Worksheet  
Sheets("A1 - Liste").Select  
Set plg = Range("A3", Range("A3").End(xlDown))  
Application.ScreenUpdating = False  
For Each cel In plg.Cells  
    If cel.Value <> "" Then  
        ' Si la personne a été contactée (colonne N non vide)         
        If Range("N" & cel.Row).Value <> "" Then              
            On Error Resume Next ' pour éviter erreur si elle n'existe pas  
            Set oFeuille = Sheets(cel.Value)  
            On Error GoTo 0 ' retour à la normale  
            If oFeuille Is Nothing Then  
                ' Création d'une nouvelle feuille portant le nom de la personne contactée  
                Sheets.Add After:=Sheets(Sheets.Count)  
                ActiveSheet.Name = cel.Value  
                Sheets("A1 - Liste").Select  
            End If  
        End If  
    Set oFeuille = Nothing  
    End If  
Next  
End Sub



A tester

Cordialement,
0
Thalia31 Messages postés 3 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 13 février 2013
13 févr. 2013 à 12:12
Mille mercis, ça marche !

Je me suis aperçue que j'avais également des lignes vides qui perturbait la macro ; en les supprimant et en utilisant votre proposition, tout roule.

Encore merci et bonne journée !
0