finalisation de macro difficile...

choupi_nette

XLDnaute Occasionnel
Bonjour,

j'ai, dans le fichier ci joint, une macro qui fonctionne a 99%
Il me reste à remplir dans l'onglet "bilan" la colonne i mais je bloque...
En fait cette colonne doit etre remplie d'une certaine maniere:
je renseigne dans l'onglet CDNA_PRIMER des infos colonne A et B
En fonction de ce que je renseigne, ca genere un tableau dans ce meme onglet en F14:K17
il faut qu'en fonction de ce qui est entré dans F14:K17 ca me reporte des valeurs en bilan colonne i
voici plusieurs exemples pour comprendre ce que je cherche:
En H2, H3, H4 il y a primer1 et primer1 dans l'onglet CDNA_PRIMER correspond a la position 1
donc renvoyer "1" en I2, I3 et I4
En H17 ou 18 ou 19 il y a Primer 6 qui correspond dans l'onglet CDNA_PRIMER à la position 8 donc renvoyer "8" en I17, I18 et I19
et ainsi de suite pour toute la liste fournie onglet CDNA_PRIMER colonne B
J'espere que c est assez clair
L'un(e) d'entre vous pourrait m'aider ?
Juste pour info les autres colonnes sont ok pour moi dans "bilan"
Merci
Choupi
 

Fichiers joints

Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : finalisation de macro difficile...

bonjour Choupi

Pas compris comment deduire dans CDNA_PRIMER: Primer 1 > position 1 et Primer 6 > position 8
 

choupi_nette

XLDnaute Occasionnel
Re : finalisation de macro difficile...

Cher Pierrejean

Tout se joue dans le tableau F14:K17
les valeurs vont dans l'ordre:
1,2,3,4,5,6 (de F14 à K14)
7,8,9,10,11,12 (de F15 à K15)
13,14,15,16,17,18 (de F16 à K16)
19,20,21,22,23,24 (de F17 à K17)

Desolée pour la programmation debutante mais j ai du mal...
Pour te donner une idée dans bilan colonne C y a le meme mecanisme ( mais avec le tableau G22:R29 de CDNA_Primer) que je recherche mais j'y arrive pas pour la colonne I !!
En gros tant que c'est la meme valeur pour la colonne juste a gauche ca renvoie la meme valeur a droite en fonction du tableau CDNA_Primer
Merci
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : finalisation de macro difficile...

Bonjour.
VB:
Range("I2:I" & DerLig).FormulaR1C1 = "=MATCH(RC[-1],CDNA_PRIMER!R2C2:R178C2,0)"
DerLig étant à remplacer par la bonne expression ou variable représentant le numéro de la dernière ligne.

P.S. et mon 178 est tout à fait au hasard, le code étant tellement délayé à cause de tous ces Select inutiles et sans aucune indentation qu'il est très difficile de voir où on peut trouver ces informations dans votre code !
À +
 
Dernière édition:

choupi_nette

XLDnaute Occasionnel
Re : finalisation de macro difficile...

Re,
Merci mais ca ne renvoit pas du tout les bonnes valeurs...
Exemple:
primer5 doit renvoyer 2 et pas 5..
A+
 

Dranreb

XLDnaute Barbatruc
Re : finalisation de macro difficile...

Oui, j'ai vu trop tard.
Mais ces noms peuvent changer ? Primer1 à 16 ou sont toujours les mêmes ?
À +
 

choupi_nette

XLDnaute Occasionnel
Re : finalisation de macro difficile...

non Primer1 a 16 peuvent s'appeler pierre paul jacques...
Je renseigne onglet 1 les colonnes A et B et tout le reste se fait automatiquement..

Seule cette fameuse colonne I j'y arrive pas...
 

pierrejean

XLDnaute Barbatruc
Re : finalisation de macro difficile...

Re

Je t'ai créée en Module 2 une fonction personnalisée pour avoir le 8 pour Primer6 1 pour Primer1 en fonction de leur emplacement dans le tableau
Je l'ai reportée en feuille bilan
Tu peux bien sur l'utiliser dans une macro ; je n'ai pas vu ou tu remplissais ta feuille bilan sinon je l'aurais fait
 

Fichiers joints

KenDev

XLDnaute Impliqué
Re : finalisation de macro difficile...

Bonjour Choupi_nette, Pierrejean,

Sans regarder le code, comme la numérotation de BC_Rack_Primer position correspond à l'ordre 'naturel' de bouclage d'Excel, essayer d'inclure dans le code quelque chose comme
VB:
For i = 2 To 247 'boucle colonne I à adapter
        cp = 0
        For Each c In Worksheets("CDNA_PRIMER").Range(Worksheets("CDNA_PRIMER").Cells(14, 6), Worksheets("CDNA_PRIMER").Cells(17, 11))
            cp = cp + 1
            If c = Worksheets("bilan").Cells(i, 8) Then
                Worksheets("bilan").Cells(i, 9) = cp
                Exit For
            End If
        Next c
    Next i
Si tu préfères une formule 'toute bête' à inclure peux tu dire si Les Primer1, 2 ... sont de vraies données c.a.d c'est toujours la même nomenclature?
Y 'a-t-il une logique de remplissage pour le tableau BC_Rack_Primer position ?
Si oui qu'elle est elle ? Remplir un maximum de ligne jusqu'à un maximum de 4, exemple pour 7:
Primer1, Primer5,
Primer2, Primer6,
Primer3, Primer7,
Primer4
serait correct ?

Cordialement

KD

Edit : bonjour Dranreb
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : finalisation de macro difficile...

VB:
N = Worksheetfunction.Match(?H?, Worksheets("CDNA_PRIMER").Range("B2:B17"), 0)
?I?.Value = ((N - 1) mod 4) * 8 + (N - 1) \ 4 + 1
Les ?n? étant à remplacer par les expression qui désignent la cellule de la bonne ligne colonne n
j'ai plus envie de replonger dans votre code pour voir comment c'est écrit. D'ailleurs je n'arrive même pas à retrouver où ça se passe...
À +
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : finalisation de macro difficile...

Re

Salut à tous

Je viens de trouver:

modif a effectuer (avec la fonction en Module2) :

Code:
Range("H1").Select
ActiveCell.Value = "primer_name"
Cells(row2, 9).Select
ActiveCell.Value = numero(Cells(row2, 8))
'ActiveCell.Value = Source_BC_pos_primer
Range("I1").Select
NB: ton code aurait besoin d'un bon nettoyage (Select (inutiles) en exces)
 

choupi_nette

XLDnaute Occasionnel
Re : finalisation de macro difficile...

Re

Merci a tous pour vos reponses mais dans aucun des cas je n'arrive a mettre vos lignes dans mon code
KenDev est vraiment le plus proche (pour les autres j'ai pas reussi a integrer le code
Seul inconvénient de KenDev: si il y a moins de primers dans la liste ca genere des 2 sur toute la colonne et je sais pas comment lui dire que ca s'arrete a la derniere ligne

Merci encore pour votre aide
 
Dernière édition:

choupi_nette

XLDnaute Occasionnel
Re : finalisation de macro difficile...

Cher kendev,
La logique est la suivante...
Je remplis dans l'onglet 1 les colonnes A et B
La macro fait toutes les combinaisons de cDNA avec les primers et cela trois fois chacuns (réplicats)
Dans ma feuille bilan je cherche a savoir en fonction de ce qui a été généré colonne H ce qui correspond comme position colonne I
Et ce qui correspond comme position se trouve dans l'onglet 1
Tout se joue dans le tableau F14:K17
les valeurs vont dans l'ordre:
1,2,3,4,5,6 (de F14 à K14)
7,8,9,10,11,12 (de F15 à K15)
13,14,15,16,17,18 (de F16 à K16)
19,20,21,22,23,24 (de F17 à K17)


Note:
On peut avoir beaucoup de primers et peu de cDNA ou l'inverse.
Ils peuvent changer de noms a chaque nouveau lancement de macro

j'espere que je suis assez claire car c'est un peu complexe comme procedure..


Bonjour Choupi_nette, Pierrejean,

Sans regarder le code, comme la numérotation de BC_Rack_Primer position correspond à l'ordre 'naturel' de bouclage d'Excel, essayer d'inclure dans le code quelque chose comme
VB:
For i = 2 To 247 'boucle colonne I à adapter
        cp = 0
        For Each c In Worksheets("CDNA_PRIMER").Range(Worksheets("CDNA_PRIMER").Cells(14, 6), Worksheets("CDNA_PRIMER").Cells(17, 11))
            cp = cp + 1
            If c = Worksheets("bilan").Cells(i, 8) Then
                Worksheets("bilan").Cells(i, 9) = cp
                Exit For
            End If
        Next c
    Next i
Si tu préfères une formule 'toute bête' à inclure peux tu dire si Les Primer1, 2 ... sont de vraies données c.a.d c'est toujours la même nomenclature?
Y 'a-t-il une logique de remplissage pour le tableau BC_Rack_Primer position ?
Si oui qu'elle est elle ? Remplir un maximum de ligne jusqu'à un maximum de 4, exemple pour 7:
Primer1, Primer5,
Primer2, Primer6,
Primer3, Primer7,
Primer4
serait correct ?

Cordialement

KD

Edit : bonjour Dranreb
 

KenDev

XLDnaute Impliqué
Re : finalisation de macro difficile...

Re,

Je réponds un eu tard, pas facile 2 fils en meme temps :)

Re
Seul inconvénient de KenDev:
Oh non, ils y en a bien d'autres...:p

si il y a moins de primers dans la liste ca genere des 2 sur toute la colonne et je sais pas comment lui dire que ca s'arrete a la derniere ligne
Sans voir comment mon brouillon de code à été intégré, pas facile de diagnostiquer ou essayer de corriger. mais je crois que celà n'a plus trop d'importance, bravo à PierreJean.

Cordialement

KD
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas