Rappatriement de données d'une feuille à l'autre

Bonjour,

Je débute à peine sous excel au boulot et j'aimerais faire une bonne grosse base de données. Par soucis de simplicité, J'aimerais ecrire une chose dans une feuille et que la cellule soit copiée sur une autre feuille.

Bon je vais mettre un exemple très grossier :

"=SI [[cellule1]feuille1]=[[cellule2]feuille2] alors [[cellule3]feuille1]=[[cellule4]feuille2]" et vice versa.

Est ce possible ?

J'aurais une autre question mais je la poserais dans un autre sujet.

Bonjour,

peux-tu expliciter ton vice et versa ?

Bonjour h2so4,

Le vice versa serait :

  • d'une part de rentrer quelque chose sur la feuille 1 et que ça soit rentré sur la feuille 2
  • et d'autre part, rentrer quelque chose sur la feuille 2 et que ça soit rentré sur la feuille 1.

Merci

Bonjour,

ce ne sera pas possible avec une formule, mais c'est possible avec une macro événementielle.

un exemple de macro événementielle qui copie chaque modification d'une feuille dans l'autre.

25mitrolyr.xlsm (13.35 Ko)

Rebonjour H2SO4

En fouillant dans le forum, je suis tombé sur un topic auquel vous avez répondu et qui pourrait me convenir. Mais le soucis avec ce code est que mon tableau d'origine n'est pas formaté pareil que celui que je désire.

Sub maj()

Set wsi = Sheets("mises à jour")

Set wso = Sheets("Elèves")

dli = wsi.Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne de wsi

dlo = wso.Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne de wso

For i = 2 To dli 'on parcourt toutes les lignes de wsi

Set re = wso.Range("A2:A" & dlo).Find(wsi.Cells(i, 1), lookat:=xlPart) 'on cherche le numéro de dossier dans wso

If re Is Nothing Then ' si non trouvé on ajoute une nouvelle ligne

lam = dlo + 1 'lam = ligne qui doit recevoir la modif

Else

lam = re.Row ' ligne à modifer est la ligne dans laquelle on a trouvé le n° de dossier

End If

wsi.Rows(i).Copy wso.Cells(lam, 1) 'on copie la ligne de wsi vers wso

Next i

End Sub

Cet exemple était dans le topic suivant : https://forum.excel-pratique.com/excel/mise-a-jour-d-une-feuille-a-partir-d-une-autre-feuille-t57031.html

On peut oublier le vice versa. Je suis désolé je suis vraiment une bille pour les macro ....

J'aimerais vous montrer ma base de données mais elle contient des données confidentielles et d'autre part, le fichier pèse 8 Mo

Merci d'avance !

bonjour,

merci de joindre un fichier avec la structure, quelques données bidons et ce que tu attends de la macro.

Merci de tes réponses

Je te transferais l'exemple que tu me demandes lundi car je ne suis plus au boulot pour pouvoir le faire.

Merci beaucoup en tout cas !

Bonne soirée !

Bonjour ,

Je récapitule tout, je souhaiterais pouvoir transférer les données des feuilles "Biothèque" vers la feuille "Tableau général" via un bouton situé sur la feuille "tableau général" tout ça grâce à la reconnaissance du numéro du patient (et parfois des gènes (UL97 / UL54 / UL27) ).

Je n'ai mis qu'un seul exemple dans le tableau mais il faut savoir qu'il y a plus de 2000 lignes de patient dans le tableau et il ne sont que rarement dans l'odre par rapport aux boîtes de biothèques.

Le tableau est déjà pas mal rempli, si je mets une macro dedans, risquerais-je de perdre des données ?

Merci d'avance.

23exemple.zip (14.96 Ko)

Je ne sais pas si je me suis bien exprimé

re-Bonjour,

vu la manière dont tes données sont organisées c'est un peu la galère pour automatiser. chaque feuille biothèque a une structure différente.

il conviendrait également de déterminer dans quelles feuilles sont introduites quelles données et dans quelles feuilles les recopier.

il manque une colonne (nombre de tubes purifiés, dans la feuille tableau général)

que faire quand un numéro n'existe pas dans le tableau général ?

que faire quand il y a plus de tubes que de places dans le tableau général ?

j'ai fait une ébauche de programme, qui traite les 2 premières biothèques,

les données des feuilles biothèques resteront inchangées, par contre tu as un risque de perdre des données du tableau général, si la données copiée n'est pas présente dans la feuille biothèque.

à tester sur une copie, lancer la macro maj par alt-f8

Sub maj()
    Set wso = Sheets("tableau général")
    dlo = wso.Cells(Rows.Count, 1).End(xlUp).Row    ' dernière ligne de wso

    'traitement pour la feuille Biothèque Echantillons -80°C
    Set wsi = Sheets("Biothèque Echantillons -80°C")
    dli = wsi.Cells(Rows.Count, 1).End(xlUp).Row    ' dernière ligne de wsi
    For i = 4 To dli    'on parcourt toutes les lignes de wsi
        clé = wsi.Cells(i, "C")
        If clé <> "" Then    'numéro à chercher n'est pas ""
            Set re = wso.Range("D2:D" & dlo).Find(clé, lookat:=xlWhole)    'on cherche le numéro de dossier dans wso    'on cherche le numéro de dossier dans wso
            If re Is Nothing Then    ' si non trouvé on ajoute une nouvelle ligne
                dlo = dlo + 1
                lam = dlo    'lam = ligne qui doit recevoir la modif
                wsi.Range("C" & i & ":F" & i).Copy wso.Cells(lam, 1)    'copie nom prénom dna gims et date prélèvement
                wsi.Cells(i, "I").Copy wso.Cells(lam, "E")
            Else
                lam = re.Row    ' ligne à modifier est la ligne dans laquelle on a trouvé le n° de dossier
            End If
            ne = wso.Cells(lam, "T") + 1    ' ne = nombre d'échantillons pour cette biothèque
            If ne > 5 Then MsgBox "trop d' échantillons pour " & wso.Cells(lam, 4): Exit Sub
            With wso.Cells(lam, "T")
                .Value = ne    ' on met à jour le nombre d'échantillons
                With .Offset(0, (ne - 1) * 7 + 1)    ' on se positionne sur la première cellule pour recevoir les données de cet échantillon
                    .Cells(1, 1) = wsi.Cells(i, "A")    ' numéro de boite
                    .Cells(1, 2) = wsi.Cells(i, "B")    ' position
                    .Cells(1, 3) = wsi.Cells(i, "H")    ' quantité prélevée
                    ' à compléter
                End With
            End With
        End If
    Next i

    Set wsi = Sheets("Biothèque Extraits -20°C")
    dli = wsi.Cells(Rows.Count, 1).End(xlUp).Row    ' dernière ligne de wsi
    For i = 2 To dli    'on parcourt toutes les lignes de wsi
        clé = wsi.Cells(i, "C")
        If clé <> "" Then    'numéro à chercher n'est pas ""
            Set re = wso.Range("D2:D" & dlo).Find(clé, lookat:=xlWhole)    'on cherche le numéro de dossier dans wso
            If re Is Nothing Then    ' si non trouvé on ajoute une nouvelle ligne
                dlo = dlo + 1
                lam = dlo    'lam = ligne qui doit recevoir la modif
                wsi.Range("A" & i & ":B" & i).Copy wso.Cells(lam, 1)    'copie nom prénom gims
                wsi.Cells(i, "C").Copy wso.Cells(lam, "D")
            Else
                lam = re.Row    ' ligne à modifier est la ligne dans laquelle on a trouvé le n° de dossier
            End If
            ne = wso.Cells(lam, "BE") + 1    ' ne = nombre d'échantillons pour cette biothèque
            If ne > 1 Then MsgBox "trop d' échantillons pour " & wso.Cells(lam, 4): Exit Sub
            With wso.Cells(lam, "BE")
                .Value = ne    ' on met à jour le nombre d'échantillons
                With .Offset(0, (ne - 1) * 7 + 1)    ' on se positionne sur la première cellule pour recevoir les données de cet échantillon
                    .Cells(1, 1) = wsi.Cells(i, "F")    ' numéro de boite
                    .Cells(1, 2) = wsi.Cells(i, "G")    ' position
                    .Cells(1, 3) = wsi.Cells(i, "E")    ' quantité prélevée
                    ' à compléter
                End With
            End With
        End If
    Next i

    Set wsi = Sheets("Biothèque Purifiats -20°C")
    dli = wsi.Cells(Rows.Count, 1).End(xlUp).Row    ' dernière ligne de wsi
    For i = 2 To dli    'on parcourt toutes les lignes de wsi
        'à compléter
    Next i

    Set wsi = Sheets("Biothèque +4°C")
    dli = wsi.Cells(Rows.Count, 1).End(xlUp).Row    ' dernière ligne de wsi
    For i = 2 To dli    'on parcourt toutes les lignes de wsi
        'à compléter
    Next i

End Sub

libre à toi de compléter la macro là où cela est nécessaire.

17mitrolyr.zip (28.12 Ko)

Ok merci, si j'arrive à corriger la mise en forme et la macro complémentaire, pourras tu vérifier si tout es bon ?

Merci beaucoup en tout cas

Rechercher des sujets similaires à "rappatriement donnees feuille"