Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme avec une macro

  • Initiateur de la discussion Initiateur de la discussion cippo
  • 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 !

C

cippo

Guest
Bonjour à tous,

Je vais essayer de vous décrire le plus clairement mon problème.
J'ai une feuille (nommée DériveT3-088) dont je veux copier une cellulle dans une autre feuille (modification). Cette feuille modification comporte plusieurs lignes. Dans ma cinquieme colonne de ma feuille modification je fais référence à une numéro de certificat. Ce même numéro est repris dans ma feuille Dérive T3-088.
Donc lorsque je clique sur un bouton qui doit se trouver dans la feuille Dérive T3-088, il doit me coller une info sur la ligne comportant le même numéro de certificat dans la feuille Modification.
Voici la macro que j'ai écrite mais qui ne fonctionne pas.

Sub dérive()
Dim n As Integer
Dim a
n = 1
Do Until Worksheets("Modification").Cells(n, 5) = Range("F1").Value
n = n + 1
If n > 10000 Then
MsgBox "Numéro de certificat introuvable. Veuillez d'abord compléter la fiche de vie."
End
End If
Loop
If Range("B3").Value > 0 Then
Worksheets("Modification").Range("T" & n) = Range("B3").Value
End If
End Sub

Merci de bien vouloir m'aider...
 
Re : probleme avec une macro

Bonjour cippo
Un petit classeur, support de la procédure, serait bienvenu.
À bientôt peut-être…
ROGER2327
#4505


Dimanche 8 As 138 (Saint Rimbe, Oisif, ST)
20 Brumaire An CCXIX
2010-W45-3T15:03:40Z
 
Re : probleme avec une macro

Salut cippo et le forum
Ta macro ne fonctionne pas => Donc, ce n'est pas avec le code qu'on va trouver ce qu'elle devrait faire => Donc, on doit se rabattre sur tes explications. Mais heureusement qu'il y a la macro pour combler les trous 😡

Ce que je crois comprendre :
une feuille "DériveT3-088" ou peut-être "Dérive T3-088" => F_D
Une feuille "Modification" => F_M
Tu veux copier une cellule de F_D vers la feuille F_M
Colonne E de F_M = N°certificat
Je dois rechercher le certificat existant en cellule F1 de F_D dans la colonne E de F_M :
- Je ne le trouve pas => Boîte à message : "Numéro de certificat introuvable. Veuillez d'abord compléter la fiche de vie." et sortie
- Je le trouve : je colle la valeur de la cellule B3 de F_D dans la colonne T de F_M, à la même ligne.
Ce qui donne un code qui pourrait être dans ce style :
Code:
Sub dérive()
'Déclaration -----------------------------
Dim F_D As Worksheet, F_M As Worksheet
Dim Cel As Range
'MEI ------------------------------------
Set F_D = Sheets("Dérive T3-088")  'A VÉRIFIER
Set F_M = Sheets("Modification")
'Recherche -----------------------------
Set Cel = F_M.Range(Columns(5)).Find(F_D.[F1], LookIn:=xlValues, LookAt:=xlWhole)
'recherche infructueuse -----------------
If Cel Is Nothing Then
    MsgBox "Numéro de certificat introuvable. Veuillez d'abord compléter la fiche de vie."
Else 'recherche OK
    If F_B.[B3] > 0 Then F_M.Cells(Cel.Row, "T") = F_B.[B3]
End If
End Sub
Une remarque : Ne connaissant pas le fichier, ce n'est que la reproduction de ce que je crois avoir compris... et donc, je ne l'ai pas testée.

Sur ta macro :
Pense à utiliser les balises de code : ça rend les postes plus lisibles

Tu définis n en integer : je préfère utiliser un type lui permettant d'avoir la limite haute qu'elle peut atteindre. Comme c'est une ligne, elle peut dépasser les 32735 et je la déclare toujours en Long, même si je n'en utilise que 10. Le but étant de limiter les risque d'erreur, quelque soit l'habitude prise.

Tu figes la plage de recherche à la ligne 10000 pour le max : Soit tu as réellement 10000 et ça n'évoluera jamais, et c'est une bonne chose.
Soit c'est un nombre arbitraire, et c'est une erreur : perte de temps, si le nombre est nettement inférieur, danger d'oubli de donnée, si c'est un nombre évolutif. il vaut mieux laisser Excel le déterminer.

Tu utilises End : Je préfère utiliser Exit Sub => si c'est des macros imbriquée, je retourne dans la macro d'où elle a été appelée.

Tu testes B3 avant de copier sa valeur. Quand c'est comme ça, je me pose toujours la question de savoir si c'est bien nécessaire : ça fait un test de plus, et si B3 est vide est-ce une mauvaise idée de le copier : T sera vide.
Mais, c'est juste pour prendre des habitudes : un test de plus dans une boucle coûte du temps (Mais B3 peut prendre des valeurs négatives dans ton cas).

Quand tu fait une description, il faut qu'un inconnu extérieur au problème puisse le comprendre. Et ce qui est évident, ça ne l'est que si tu utilises le classeur. Si c'est une évidence que tu décris, ça n'est jamais grave. Mais si elle ne l'est que pour toi...
A+
 
- 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
4
Affichages
730
Réponses
5
Affichages
907
Réponses
5
Affichages
573
Réponses
2
Affichages
526
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…