• Initiateur de la discussion Initiateur de la discussion dilank
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dilank

Guest
Bonjour,

En PJ un fichier que j'utilisais sous excel 2010 (mais réalisé sur un excel plus ancien...) mais depuis que je suis passé sur 2013 la macro ne fonctionne plus correctement ...

la macro a pour but d'imprimer pour chaque personne une lettre et de s’arrêter automatiquement quand il n'y a plus de personne d'inscrite ... et de remplir la date à laquelle l'impression à été effectué sur la feuille BDD CLT.

depuis excel 2013 les 2 premières lettres se passe bien mais après le nom ne change plus et les dates s'enregistre sur la feuille "lettre" , et j'ai vu que sur la feuille BDD CLT, le "n°client pour visuel lettre" ne change plus.

Merci pour votre aide.
 

Pièces jointes

Re : Probleme macro

je pense que le problème est bien avec cette liste déroulante... j'ai refait la validation de ma liste déroulante au cas où.. mais j'ai toujours le même problème... je pense que j'ai un soucis avec la macro .. ? quelque chose qui change avec excel 2013 .. ?
 
Re : Probleme macro

Bonjour
J'ai testé mais en 07 , ta liste est bonne , tout se passe bien
mais je mettrai dans la macro le nom de feuille avant la boucle style "with worksheet ......
Cela provient peut-être de ton imprimante ? (paramètre)
 
Re : Probleme macro

j'ai mis en .PrintPreview mais je vois que la macro s'arrete à la 2ème et plusieurs fois... sans changer de personne

meme en utilisant with worksheet avant i=16.

J'ai ajouté par contre Sheets("BDD CLT") avant Range("I" & J) = Date du coup pour la date c'est bon ...
 
Re : Probleme macro

salut,
Voici une proposition
Code:
Dim J As Integer
With Feuil1 'j'utilise le codename et non le name de l'onglet
  For J = 16 To .Range("C" & Rows.Count).End(xlUp).Row
    If .Range("I" & J) = "" Then
      .Range("P4") = .Range("A" & J)
     Sheets("LETTRE").PrintOut
      .Range("I" & J) = Date
    End If
  Next J
End With
 
Re : Probleme macro

salut,
Voici une proposition
Code:
Dim J As Integer
With Feuil1 'j'utilise le codename et non le name de l'onglet
  For J = 16 To .Range("C" & Rows.Count).End(xlUp).Row
    If .Range("I" & J) = "" Then
      .Range("P4") = .Range("A" & J)
     Sheets("LETTRE").PrintOut
      .Range("I" & J) = Date
    End If
  Next J
End With

COOL ça marche Youki !!! Merciiiii beaucoup !!!!
 
Re : Probleme macro

salut

Il n'y a pas de raison que ta macro initiale ne remplisse pas son rôle* sauf si elle est mal placée. Tu peux aussi la transférer dans la page de code de la feuille concernée et même utiliser l'outil tableau qui ne nécessite pas d'indication de feuille de référence (With...) comme dans l'exemple joint. Dis-nous ce que cela donne avec la version 2013.

La liste de validation n'intervient pas dans son déroulement. Je pense que tu veux seulement un aperçu de la feuille d'impression. Si c'est le cas tu as un exemple dans le fichier joint.
 

Pièces jointes

Re : Probleme macro

Je voudrai aussi réparer mes oublis
Quand on met "With Worksheet ......" , derrière plus besoin d'ajouter le nom de feuille mais on ajoute un "." devant ( Range, cells)et de plus comme le dit SI , c'était plus pratique de mettre le code en "feuille" au lieu de "module" ça évite les confusions
voili voilà !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
143
Réponses
3
Affichages
206
Retour