probleme avec fonction .find

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

davidpa

Guest
bonjour à tous
voici le probleme:
mes macros ont pour but de créer des onglets pour chaque académie présente dans une liste (feuille F1)
ensuite de récupérer l'ensemble des infos de ces acad et de les copier vers l'onglet adéquat.
lorsque je regarde en profondeur , dans les détails, je remarque que pour 2 acad (et toujours les mêmes), les données copièes ne sont pas bonnes , alors que cela a fonctionné pour toutes les autres acad (22).

quelqu'un veut-il bien se pencher sur mon problème?
ce serait vraiment sympa, merci d'avance
 
Re : probleme avec fonction .find

ok, je vais essayé sans etre brouillon

Ma feuille f1 contient 4 colonne (acad - dossard - epreuve - points)
il peut y avoir jusqu'à 26 acad.
il y a autant de dossards que de participants par acad.
Il y a quatre type d'epreuve.

je veux récupérer les données de chaque acad pour les mettre dans un onglet par acad créé à cet effet
les onglet sont créé dans une première étape (le problème ne vient pas de là)
c'est dans la récupération des données.
plus précisément le problème survient quand l'académie en question n'a pas de sossard dans une des épreuves.
le code est un peu long, je vous le met.

Sub copie_vers_acad()
Sheets("F1").Select
Range("f2").Select 'colonne des nb acad
finligne = Range("a1").End(xlDown).Row
ligne3 = Range("f1").End(xlDown).Row
For x = 2 To ligne3
Sheets("F1").Select
name_onglet = Cells(x, 8).Value
acad = Cells(x, 7).Value
Sheets(name_onglet).Range("c1") = name_onglet: Sheets(name_onglet).Range("c2") = acad
'*********************************************************************'
'Recherche de la premiere et derniere ligne de l'acad
With Worksheets("F1").Range(Cells(1, 1), Cells(finligne, 1))
Set c = .Find(acad, LookIn:=xlValues, MatchCase:=True)

firstAddress = c.Address
ligne1 = c.Row
Do
ligne2 = c.Row
Set c = .FindNext(c)
Loop While c.Address <> firstAddress
' Sheets(name_onglet).Range("d6") = ligne1: Sheets(name_onglet).Range("e6") = ligne2
End With

'*********************************************************************'
'*********************************************************************'
'Recherche de la premiere et derniere ligne de l'epreuve course pour l'acad

With Worksheets("F1").Range(Cells(ligne1 - 1, 3), Cells(ligne2, 3))
Set c = .Find("Course", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
ligne1_course = c.Row
Do
ligne2_course = c.Row
Set c = .FindNext(c)
Loop While c.Address <> firstAddress
Range(Cells(ligne1_course, 2), Cells(ligne2_course, 2)).Copy Sheets(name_onglet).Range("b6")
Range(Cells(ligne1_course, 4), Cells(ligne2_course, 4)).Copy Sheets(name_onglet).Range("c6")
End If
End With
'*********************************************************************'
'*********************************************************************'
'Recherche de la premiere et derniere ligne de l'epreuve Lancers pour l'acad

With Worksheets("F1").Range(Cells(ligne1, 3), Cells(ligne2, 3))
Set c = .Find("Lancers", LookIn:=xlValues, MatchCase:=True)
If Not c Is Nothing Then
firstAddress = c.Address
ligne1_lancer = c.Row
Do
ligne2_lancer = c.Row
Set c = .FindNext(c)
Loop While c.Address <> firstAddress
Range(Cells(ligne1_lancer, 2), Cells(ligne2_lancer, 2)).Copy Sheets(name_onglet).Range("d6")
Range(Cells(ligne1_lancer, 4), Cells(ligne2_lancer, 4)).Copy Sheets(name_onglet).Range("e6")
End If
End With
'*********************************************************************'
'*********************************************************************'
'Recherche de la premiere et derniere ligne de l'epreuve Sauts pour l'acad
'
' With Worksheets("F1").Range(Cells(ligne1, 3), Cells(ligne2, 3))
' Set c = .Find("Sauts", LookIn:=xlValues)
' If Not c Is Nothing Then
'
' firstAddress = c.Address
' ligne1_saut = c.Row
' Do
' ligne2_saut = c.Row
' Set c = .FindNext(c)
' Loop While c.Address <> firstAddress
' Range(Cells(ligne1_saut, 2), Cells(ligne2_saut, 2)).Copy Sheets(name_onglet).Range("f6")
' Range(Cells(ligne1_saut, 4), Cells(ligne2_saut, 4)).Copy Sheets(name_onglet).Range("g6")
' End If
' End With
'*********************************************************************'
'*********************************************************************'
'Recherche de la premiere et derniere ligne de l'epreuve relais pour l'acad

' With Worksheets("F1").Range(Cells(ligne1, 3), Cells(ligne2, 3))
' Set c = .Find("Relais", LookIn:=xlValues)
' If Not c Is Nothing Then
' firstAddress = c.Address
' ligne1_relais = c.Row
' Do
' ligne2_relais = c.Row
' Set c = .FindNext(c)
' Loop While c.Address <> firstAddress
'
' Range(Cells(ligne1_relais, 2), Cells(ligne2_relais, 2)).Copy Sheets(name_onglet).Range("h6")
' Range(Cells(ligne1_relais, 4), Cells(ligne2_relais, 4)).Copy Sheets(name_onglet).Range("i6")
' End If
' End With
'*********************************************************************'
Sheets(name_onglet).Select
Call selection_zone_calcul
Call calcul_somme_points
Next
End Sub
 
Re : probleme avec fonction .find

ok, j'étais en mode simple!!!!!!!
j'ai vu
voici voila le BB
le code en question se trouve dans le module "gestion_acad"
dans la feuille "F1", cliquer sur bilan acad
mon probleme se situe avec l'acad de Lyon et starsbourg.
 

Pièces jointes

- 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

H
Réponses
11
Affichages
3 K
A
Réponses
2
Affichages
21 K
alpilon
A
J
Réponses
5
Affichages
3 K
D
Réponses
7
Affichages
2 K
documentation
D
Retour