Aller au contenu

Excel : fusion de bases de données et/ou mise à jour...


sechanbask

Messages recommandés

Algorithme:

Etape de récupération de données :

Dans "Feuil5 déperditions", je fais une recherche dans les intitulés des colonnes (en ligne 1), je reconnais les colonnes qui m'intéressent, je garde en mémoire le numéro des colonnes à savoir A, C,D,E. Puis je lis les colonnes qui m'intéressent de la ligne 2 et je garde en mémoire le contenu des cellules A2,C2,D2,E2.

 

Etape de fusion:

Danse "Feuil1 liste radiateur", je fais une recherche dans les intitulés des colonnes (en ligne 1), je reconnais les colonnes qui m'intéressent, je garde en mémoire le numéro des colonnes à savoir A, B, D. Puis je lis la colonne qui m'intéresse (à savoir A) et si je trouve dans cette colonne une valeur de cellule identique à "Feuil5 déperditions-A2" imaginons que la cellule se trouve en ligne 211, je mets la valeur "Feuil5 déperditions-D2" dans B211, et "Feuil5 déperditions-C2" dans D211.

 

et je boucle les 2 tapes jusqu'à ce que j'ai fini la base de données de la feuille "Feuil5 déperditions".

/Algorithme

 

 

Sub récapdep_listing()
'attention cette macro ne fonction que si les données sont en feuil1 (la première créée) et en feuil5 (la 5ième créée).

Dim i As Single
Dim j As Single
Dim Nom_colonne As String
Dim Colonne_th As Single
Dim Colonne_thi As Single
Dim Colonne_deperdition As Single
Dim Colonne_nom_piece As Single
Dim Colonne_nom_piece_th As Single
Dim Colonne_puissance As Single


Dim Nom_local_source As String
Dim Deperdition_source As String
Dim Temperature_source As String

Dim Nom_local_destination As String


Colonne_th = 0
Colonne_nom_piece_th = 0
Colonne_deperdition = 0

Colonne_thi = 0
Colonne_nom_piece = 0
Colonne_puissance = 0

'repérage dans la Feuil5 déperditions
'parmi les 50 colonnes

'il faudrait mettre un 'excel.screenupdating = false puis = true à la fin pour augmenter la vitesse du code

For i = 1 To 50
   Nom_colonne = Feuil5.Cells(1, i)
       'on recherche la colonne "Nom du local" et on récupère le nom de la colonne en Colonne_nom_piece_th
       If Nom_colonne = "Nom du local" Then
       Colonne_nom_piece_th = i
       End If

       If Nom_colonne = "Température hiver (°C)" Then
       Colonne_th = i
       End If

       If Nom_colonne = "Déperditions totales (W)" Then
       Colonne_deperdition = i
       End If

       If Colonne_th <> 0 And Colonne_nom_piece_th <> 0 And Colonne_deperdition <> 0 Then
       Exit For
       End If

Next i


'repérage Feuil1 liste radiateur
'recupère le nom de la colonne où se trouve l'attribut pour le radiateur
For j = 1 To 150
       Nom_colonne = Feuil1.Cells(1, j)
      
       If Nom_colonne = "Ti (°C)" Then
       Colonne_thi = j
       End If


       If Nom_colonne = "repère" Then
       Colonne_nom_piece = j
       End If
       
       If Nom_colonne = "Déperditions" Then
       Colonne_puissance = j
       End If

       If Colonne_thi <> 0 And Colonne_nom_piece <> 0 And Colonne_puissance <> 0 Then
       Exit For
       End If

Next j


For k = 2 To 1500 Step 1

'récupère les données à la source
   Nom_local_source = Feuil5.Cells(k, Colonne_nom_piece_th)
   Deperdition_source = Feuil5.Cells(k, Colonne_deperdition)
   Temperature_source = Feuil5.Cells(k, Colonne_th)
   


   For i = 2 To 1850 Step 1
   'cherche le local dans les données de destination
   Nom_local_destination = Feuil1.Cells(i, Colonne_nom_piece)
   'si les locaux portent le même nom...

       If Nom_local_source = Nom_local_destination Then
       'pour le local X mettre dans colonne nom_thi la température correspondant au local
       Feuil1.Cells(i, Colonne_thi) = Temperature_source
       'pour le local X mettre dans colonne nom_thi les déperditions correspondant au local
       Feuil1.Cells(i, Colonne_puissance) = Deperdition_source
       Else
'sinon il serait bien de faire resotir de la base de données source les pièces non trouvées dans la base de donnée de destination

       End If

   Next i
   
Next k

End Sub

 

 

Je vous donne aussi le fichier pour que vous puissiez vite voir...

http://cjoint.com/?jkiXexm4SB

 

Vous pouvez constater que les lignes 30 et 51 ne sont pas effacées lors de la fusion.

Lorsque j'ai crée ça, j'ai eu beaucoup de déchets car le nom des différents locaux n'avaient pas toujours de similitudes entre la source et la destination : des pièces avaient été regroupées pour former des pièces thermiques... mais bon j'ai gagné pas mal de temps car le listing était bien plus compliqué avec beaucoup de sous totaux, et de sauts de lignes. En fait, c'était loin de ressembler à une base de données.

J'espère que ça pourra servir à quelqu'un.[Edité le 10/9/2007 par sechanbask]

 

[Edité le 11/9/2007 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous,

 

sechanbask

 

Même question que sur le dernier post, comment charge t-on des fichiers comme celui que tu proposes ?

Je viens de regarder ton fichier Excel 'trés complet d'ailleurs !)et l'idée pour moi serait de pouvoir partir d'une feuille vierge, de "coller" ton code et voir comment ça marche.

 

Merci d'avance et @+,

 

PS: Alors ce feu d'artifice ?

 

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

dans Excel, tu tappe ATL+F11, ça devrait t'ouvrir VBA pour Excel. Tu cliques sur rien d'autre que le menu Insertion module, puis tu colles les lignes de code qui sont sur le forum.

 

 

Sous excel, il faut que tu créés un un minimum de 5 feuille car la macro ne fonctione qu'entre la feuille 1 et 5:

 

'attention cette macro ne fonction que si les données sont en feuil1 (la première créée) et en feuil5 (la 5ième créée).

 

 

 

quand tu as tes données sur tes feuilles, tu enregistres, puis tu tappes ALT+F8 , tu sélectionnes "récapdep_listing", tu fais "exécuter" et tu attends quelques secondes en fonction de ton PC.

 

bonne journée

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

c'est fait je le remets là mais il est bon dans le sujet :http://cjoint.com/?jkiXexm4SB

Bonne utilisation, j'ai appris récemment la méthode pour contrôler la régénération de l'écran... donc il faudrait le mettre (voir commentaire du code).

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

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

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité