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
 

Pièces jointes

  • QPCR_Automation.xls
    592 KB · Affichages: 41
  • QPCR_Automation.xls
    592 KB · Affichages: 44
  • QPCR_Automation.xls
    592 KB · Affichages: 43
Dernière édition:

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:

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
 

Pièces jointes

  • QPCR_Automation.xls
    588.5 KB · Affichages: 42
  • QPCR_Automation.xls
    588.5 KB · Affichages: 41
  • QPCR_Automation.xls
    588.5 KB · Affichages: 42

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
 

Discussions similaires

Réponses
1
Affichages
383