Forum Clubic

Comparaison de cellules et copie selon condirions

Bonjour à tous.

Depuis quelque temps je m’arrache la tete pour trouver la solution a mon problème qui est le suivant:
dans un classeur:
1°_une première feuille (résultats par distance)dont les titres de colonnes vont de 3000 à5900
2° _10 feuilles de (c1 à c10) ces feuilles là ont une structure identique
_ voici ce que je voudrais faire:

Dans chacune feuille de c1 à c10 j’ai une colonne ‘distance’ ici colonne" R."
il faudrait pour chaque feuille de c1 à c10 regarder la valeur qu’il y a en “R2” ,rechercher cette valeur dans les titres de colonnes de la feuille (résultat par distance) puis copier collage spécial ‘formats’ de cette colonne de la ligne 3 à 22 dans la colonne B (n°) ligne 2a21 des feuilles “c” correspondantes

Je ne suis pas fortiche en vba tout ce que je fais l’ est par l’enregistreur de macro donc je ne peux pas appliquer les conditions avec.
Quelqu’un pourrait-il m’indiquer la marche à suivre pour en arriver à mes fins.

J’espère avoir été clair dans ma demande

j’ai exel 2000

merci a ceux qui voudront m’aider

miremy

lien:(j’espère qu’il fonctionne)
www.petit-fichier.fr…

Si tu as réussi à effectuer l’opération à partir d’une macro automatique, tu n’as plus qu’à mettre une boucle autour pour alimenter toutes les feuilles en un seul passage.
Avec quelques éléments fixes à transformer en variable, quand même …

Mais tu vas te retrouver avec un tas de paramètres pas très utiles dans ton cas qui compliquent pour rien le code.
Après suppression de ces éléments inutiles, tu devrais te retrouver avec quelque chose dans ce genre :


Sheets("resultat par distance").Activate    'securité
For n = 1 To 10 'les 10 feuilles cible
    feuilleCible = "C" + Trim(Str(n))     'nom de la feuille
    reference = Sheets(feuilleCible).Range("R2")
        
    ActiveSheet.Range("A1", Range("A1").End(xlToRight)).Select    ' la ligne de "titres"
    Selection.Find(What:=reference).Select    'valeur de référence
    Range(Selection.Offset(2), Selection.Offset(21)).Copy   ' valeurs à copier
    Sheets(feuilleCible).Range("B2").PasteSpecial xlPasteFormats   'zone cible
Next

Sauf erreur de syntaxe, ça doit correspondre à ta demande, pas forcément exactement à ce que tu en attends.
Pour une bonne présentation, il y aurait encore des ajustements à faire en fonction du contenu de tes feuilles cible
Mais ça peut aussi se faire ensuite sous forme de nettoyage manuel.

Bonjour gcc

Encore une fois je te remercie
la macro me met :
“erreur 91”
variable objet ou variable de bloc With non definie
sur la ligne suivante :
Selection.Find(What:=reference).Select 'valeur de référence

Il me suffit de mettre un 0 ans les cellules "R2"qui sont vides et le code fonctionne à merveille.quand je mets ce '0’cela me copie la colonne “b” de"reussite par distance mais je m’en accommoderai

Mille fois merci
Miremy

Tu peux tester la valeur de la cellule avant de te lancer dans la copie :


reference = Sheets(feuilleCible).Range(“R2”)

if reference <> “” then
ActiveSheet.Range(“A1”, Range(“A1”).End(xlToRight)).Select ’ la ligne de “titres”
Selection.Find(What:=reference).Select 'valeur de référence
Range(Selection.Offset(2), Selection.Offset(21)).Copy ’ valeurs à copier
Sheets(feuilleCible).Range(“B2”).PasteSpecial xlPasteFormats 'zone cible
endif
Next

Cela fonctionne parfaitement

GCC tu est un As
merci pour ta promptitude

il ne me reste plus qu’à l’adapter à mes besoins.
j’explique : je suis en train de faire une usine à gaz qui consiste à faire tous les jours des stats sur les jokeys, entraineurs, chevaux,n°de corde ,ainsi que leur musique etc… sur toutes les couses de chaque hippodrome ou il y a des courses pmu.
j’arrive au dernier stade ou il faut que je fasse un classement theorique sur chaque course .c’est pas top mais une aide precieuse aux pronostics. au début J’y passais 4 heures ,maintenant 1heure suffit.
J’ai plein de choses à perfectionner encore :(extraction web longueur des macro …) mais petit à petit çà va le faire
Je remercie tous les "forumeurs"qui ont bien voulu m’aider et gcc en particulier.
Miremy

gcc

s’il te plait encore un coup de main.

comment renommer les feuilles cibles si mes onglets changent de nom exemple de "1"à “10” au lieu de "c1 à “c10”

il faut changer: (feuilleCible = “C” + Trim(Str(n)) 'nom de la feuille) par quoi ?
merci d’avance
miremy

tu enlèves simplement le “C” littéral dans la formule :
feuilleCible = Trim(Str(n))

Bonjour gcc
c’est parfait merci encore
Miremy