Macro qui va chercher des infos

manulemalin13000

XLDnaute Occasionnel
Bonjour à tous,

En piece jointe j'ai commencé une macro mais elle ne foncitonne pas
Le but aller chercher des données et les coller dans une ligne un peu plus loin (en "i" ou "j") ou sur une autre page peu importe.
Je cherche à relier le sample Name à la valeur rRNA Ratio [28s / 18s]:
Avec des couleurs cela parait beaucoup plus clair

Je n'y parviens pas. Est ce que quelqu'un peut m aider ?

merci d'avance

manu
 

Pièces jointes

  • expert.xls
    46 KB · Affichages: 58
  • expert.xls
    46 KB · Affichages: 66
  • expert.xls
    46 KB · Affichages: 59

Minick

XLDnaute Impliqué
Re : Macro qui va chercher des infos

Salut,

Si il y a beaucoup de ligne, peut etre plus rapide avec des recherches:
Code:
Sub Recherche()
    Dim Rech As Variant
    Dim AdrSample As Range
    Dim LigDst As Long, DerLigSrc As Long
    Dim ColDst As Byte
    
    Application.ScreenUpdating = False
        LigDst = 5
        ColDst = 9
        With Sheets("Bio")
            .Range(.Cells(LigDst, ColDst), .Cells(65536, ColDst + 3).End(xlUp)).ClearContents
            DerLigSrc = .Range("A65536").End(xlUp).Row
            Set Rech = .Columns("A").Find(what:="Sample Name", lookat:=xlWhole)
            
            While Not Rech Is Nothing
                Set AdrSample = Rech
                
                Set Rech = .Range("A" & AdrSample.Row + 1 & ":A" & DerLigSrc).Find(what:="rRNA Ratio [28s / 18s]:", lookat:=xlWhole)
                If Not Rech Is Nothing Then
                    .Cells(LigDst, ColDst).Resize(1, 2).Value = AdrSample.Resize(1, 2).Value
                    .Cells(LigDst, ColDst).Resize(1, 2).Offset(, 2).Value = Rech.Resize(1, 2).Value
                
                    LigDst = LigDst + 1
                End If
                Set Rech = .Range("A" & Rech.Row + 1 & ":A" & DerLigSrc).Find(what:="Sample Name", lookat:=xlWhole)
            Wend
        End With
        
        Set Rech = Nothing
        Set AdrSample = Nothing
    Application.ScreenUpdating = True
End Sub
 

manulemalin13000

XLDnaute Occasionnel
Re : Macro qui va chercher des infos

Merci ca marche super bien.

Juste pour info comment choisit-on ces varibles la ? J ai beau essayer de faire du vba j'ai jamais les bonnes
Quel est le "TRUC"?

Dim Rech As Variant
Dim AdrSample As Range
Dim LigDst As Long, DerLigSrc As Long
Dim ColDst As Byte


ENCORE MERCI
 

Minick

XLDnaute Impliqué
Re : Macro qui va chercher des infos

Re,

Il n'y a pas de "TRUC".
Il faut juste savoir quels type de donnees tu vas manipuler lorsque tu declares tes variables.

Dans notre cas:
Pour Dim Rech As Variant (Resultat de la methode FIND):
:eek: En me relisant, j'aurai du le declarer en Range car Find retourne un Range

Pour Dim AdrSample As Range (pour memoriser la cellule du dernier Sample trouve)
Donc un Range egalement.

Dim LigDst As Long, DerLigSrc As Long (Increment des lignes pour le tableau resultat et Derniere ligne de la colonne a des donnees source)
Sans savoir le nombre exact de lignes j'ai utilise une variable surdimensionnee.
Si on sait que le tableau destination n'excedera jamais 32767 lignes on peut utiliser un Integer (cellule finale ligne 32767 max. donc).
Pareil pour la derniere ligne de la source.
Un Long peu atteindre 2 147 483 647 (comme sous xl2003 c'est 65 536 ligne max., pas de soucis a ce faire)

Mais cela joue sur la memoire donc plus les variables sont bien dimensionnees et moins de memoires tu utiliseras

Dim ColDst As Byte (Pour la colonne d'origine du tableau resultat)
Pour le colonne sous xl2003 on peut avoir au maximum 256 colonnes.
Un Byte peut aller jusqu'a 255, :eek: hop hop hop mais si j'ai 256 colonne dans mon tableau resultat me diras-tu?
Ici on sait exactement le nombre de colonne (4) donc pas de souci, dans le cas contraire on aurait utilise un Interger...:D

Voila, j'espere que c'est un peu plus clair.

Sinon, dans l'aide vbe fait F1 sur un Type et ensuite via le lien Voir aussi tu
as 'Résumé des types de données' avec leur limite
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16