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

Thalia31 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Thalia31 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   646
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   646
 
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   Statut Membre Dernière intervention  
 
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