Repeter une formule et une mise en forme automatiquement

ha ok je comprends mieux la répartition de l'exécution qui n'est pas si évidente à constater visuellement sur le code pour un débutant comme moi .

Mais ton explication est très clair.

Bonjour,

Suivant ces conversations :

https://forum.excel-pratique.com/excel/code-vba-pour-envoi-de-mail-automatique-en-fonction-de-la-dat...

https://forum.excel-pratique.com/excel/envoi-mail-automatique-excel-via-outlook-selon-la-date-du-jou...

J'ai essayé de comprendre comment je pourrais envoyer un mail à chaque personne de mes tableaux sur toute mes feuilles en indiquant dans ce mail la ligne de certaine donnée le concernant. La première conversation me paraissait portant clair et simple mais je n'y arrive pas.

Dans le principe on récupère NOM, PRENOM plus certaines informations de la ligne dont l'adresse mail qui sera renseignée sur cette même ligne.

Mais après 4 heures...Je baisse les bras car plus j'essaie moins ça marche. De plus certaine fonction me son complètement inconnu et dont je ne connais pas leur principe ou fonction.

malgré tout j'ai essayé également de suivre cela mais sans succès :(

https://excel-pratique.com/fr/telechargements/utilitaires/envoyer-mails-outlook-excel-no351

PS: Je vais tout même modifier mon titre du poste puisque plusieurs choses sont concernées dans mon fil.

Bonjour

Tu ferais mieux d'ouvrir un autre fil car c'est un tout autre sujet

Outre la fabrication du mail, il y a à gérer les sécurités liées à ces envois qui dépendent de ce qui est en place dans ton entreprise.

Bonjour,

d'accord je comprends pour le sujets des mails c'est logique sinon après on s'y perd.

Je reviens sur le sujet de base. J'ai exécuté le code qui à parfaitement fonctionné sur les 2 premières feuilles de mon classeur. Le problème est que là j'ai 20 feuilles dans ce classeur.

A quel endroit du code dois-je intervenir afin d'élargir la plage de traitement des feuilles.

Merci

RE

Comme déjà dis cela traite toutes les feuilles trouvées dans le classeur et, dans chaque feuille, tous les tableaux structurés dont le nom commence par t_

Donc si les tableaux sont nommés correctement tout y passe...

Re,

dans l'exemple que je mets, j'ai utilisé l'utilitaire du site pour ananomyser les données.

J'ai laissé le code avec le bouton en feuille 1 .

Sur cet exemple il n'y a que la feuille 1 qui fonctionne.

J'ai vérifié les nom des tableaux, ils sont bien en t_1; t_2, t_3; etc...

Je ne vois pas ou se trouve mon erreur malheureusement.

12exemple.xlsm (51.01 Ko)

RE

Il faut de véritables dates : excel ne comprend que les dates >= 01/01/1900 et cohérentes, ce que ne sont pas tes colonnes Nais

Par ailleurs il n'y a pas de colonne Immat

Cela fait beaucoup de raisons de planter...

Pas très sérieux tout cela...

En mettant de vraies dates et en supprimant la ligne de code qui cherche à supprimer la colonne qui n'existe pas, cela fonctionne...

Bonjour,

pour les vrai dates, je pense parce que j'ai ananomysé le classeur.

Pour la colonne immat sur cet exemple qui date de 2 ans, effectivement celle colonne n'existait avant. Ceci-dit elle l'est sur mes fichiers actuels.

Je vais ré-essayer

merci beaucoup pour votre patience.

Pour retour je viens d'essayer sur un nouveau classeur datant de 3 ans. J'ai donc supprimé le code pour la suppression de la colonne "immat" et tout a fonctionné.

merci pour votre patience et votre temps pour l'aide apportée.

Je laisse mon sujet ouvert 4/5 jours avant de lock si jamais je rencontrerai un éventuelle problème .

En vous remerciant grandement .

hacku

Bonjour,

Pourriez vous me dire à quoi correspond cette qui apparait pour la première fois.

Merci

image

Bonjour

Sans voir la source non : la colonne à transformer pose problème...

voici le classeur en question

merci

8exemple.xlsm (136.92 Ko)

RE

S'il n'y a qu'in ligne dans le tableau cela ne marche pas : j'ai distingué le cas et ajouté la recherche de Immat

Sub Anonymiser()
Dim Infos As Range
Dim Tempo()
Dim WS As Worksheet, TS As ListObject
Dim Z As Byte, Col As Byte

    For Each WS In ThisWorkbook.Worksheets
        For Each TS In WS.ListObjects
            If Left(TS, 2) = "t_" Then
                With TS
                    For Z = 1 To 2
                        Col = IIf(Z = 1, .ListColumns("Nom").Index, .ListColumns("Nais").Index)
                        Set Infos = .ListColumns(Col).DataBodyRange
                        Select Case Infos.Rows.Count
                            Case Is = 1
                                ReDim Tempo(1)
                                Tempo(1) = Infos.Value
                        Case Else
                            Tempo = WorksheetFunction.Transpose(Infos)
                        End Select
                        For X = 1 To UBound(Tempo)
                            If Z = 1 Then
                                Tempo(X) = UCase(Left(Tempo(X), 1))
                            Else
                                Tempo(X) = Year(Tempo(X))
                            End If
                        Next X
                        .ListColumns(Col).DataBodyRange.Value = IIf(Infos.Rows.Count > 1, WorksheetFunction.Transpose(Tempo), Tempo(1))

                    Next Z
                End With
            End If
            TS.ListColumns(Col).DataBodyRange.NumberFormat = "0"
            For Each CL In TS.ListColumns
               If CL.Name = "Immat" Then CL.Delete
            Next CL
        Next TS
    Next WS
End Sub

bonjour,

désolé pour ce retour tardive. Tout fonctionne très bien pour le moment.

Encore une fois je vous remercie de votre patience et de votre savoir.

Bonjour,

J'ai une case du même type que Immat a supprimer.

Elle se nomme "Civilité" .

Je peux ajouter code en dessous d' "Immat" ?

If CL.Name = "Civilité" Then CL.Delete

merci

bon visiblement cela ne marche pas

Bonjour

If CL.Name = "Immat" or CL.Name ="Civilité" Then CL.Delete

ça fonctionne a merveille mille merci

Rechercher des sujets similaires à "repeter formule mise forme automatiquement"