Mise à jour d'onglets sous condition

Baramine

XLDnaute Nouveau
Bonjour à tous.

Voilà ma problématique.

Je dispose d'un fichier Excel avec un onglet ("Datas") de base avec des données que je mettrai à jour de façon dynamique sur une liste de sociétés. cet onglet contient une colonne "Région" et un identifiant (numéro Siren).
J'ai ensuite un onglet par région.
J'ai donc fait une macro pour copier mes données dans les onglets régions correspondants.
Chaque onglet région contient des colonnes à mettre à jour et des colonnes statiques.
ça c'est ma base.

Ce que je cherche à faire c'est pouvoir mettre à jour mes onglets région (pour les colonnes à mettre à jour) avec les données provenant de l'onglet "Datas".

A savoir que:
- des sociétés peuvent être ajoutées ou passées en statut "retirée" (dans ce cas je mets ma ligne en rouge)
- Les nouvelle sociétés sont ajoutées en fin de fichier
- Possibilité d'avoir un bouton pour imprimer un onglet en particulier
- Un flag pour les sociétés qui ont été mise à jour

Après je sais pas s'il est possible d'avoir la date de mise à jour de la ligne et le nom de la personne qui a fait la mise à jour


Si vous aviez des piste pour la manière la plus simple de procéder, je vous en serai reconnaissant! :D

Je précise que j'ai Office 2007 mais que le fichier doit être utilisable sous Office 2003!
 

Papou-net

XLDnaute Barbatruc
Re : Mise à jour d'onglets sous condition

Bonjour Baramine, et bienvenue sur le fil,

Il est probablement possible de faire tout ce que tu demandes, mais une base de fichier (sans données confidentielles) permettrait de te proposer une solution plus rapidement.

Cordialement.
 

Baramine

XLDnaute Nouveau
Re : Mise à jour d'onglets sous condition

Voilà, j'ai mis en pièce jointe queqlues 4-5 ligne et 3 onglets.

L'onglet Data contient mes données que je mets à jour périodiquement
Les onglets des régions contiennent en plus des notes(en-tête de colonne bleu).

Donc l'onglet data est mis à jour (je peux avoir 5000 lignes) et je transfert dans les onglets de régions.
- Mise en rouge de la ligne si lors d'une mise à jour le statut passe à "Inactive"
- Nouvelles sociétés en fin de liste

L'identifiant pour vérifier si une société st déjà dans une région est le siret

Voilà!

Avec les options de mon premier post.
J'espère être clair dans ce que je veux faire.

Si vous avez des pistes, je suis preneur.


PS: Aujourd'hui mon fichier contient 4500 lignes dans l'onglet "Data" et un onglet par région (26 ou 27)
Merci pour votre aide!:)
 

Pièces jointes

  • ExclDwnl.xlsx
    14.1 KB · Affichages: 86

mutzik

XLDnaute Barbatruc
Re : Mise à jour d'onglets sous condition

bonjour,

je ne suis pas sur que tu utilises le bon moyen
d'après ce que j'ai vu et je ferai :
- un magasin a un nom (col A)
- une adresse (B)
- code postal (C)
- un département (D)
- une région (E)
- un SIRET - SIREN (F)
- ...

onglet suivant :
les Directeurs de magasin
col A : siret ou SIREN (de cette façon on peut retrouver toutes les infos du magasin de l'onglet 1)
col B : nom du Directeur
col C : telephone
...

onglet suivant pour les représentants ...

idem pour les autres infos en les regroupant par famille et en utilisant chaque fois le SIRET comme clef pour retrouver toutes les autres infos nécessaires dans les autres onglets
 

Baramine

XLDnaute Nouveau
Re : Mise à jour d'onglets sous condition

Je n'ai peut-être pas été claire dans mes explications!:p

Donc j'ai un onglet Datas alimenté par une requête webservice sur une base données et je récupère des valeurs qui se trouveront dans les colonne A à AF avec entre autres une colonne SIRET et une colonne région.

J'ai donc un onglet Data et 27 onglets région

Je veux parcourir les lignes de mon onglet Datas et récuperer les valeurs Siret et Région
Ensuite je vais dans l'onglet région correspondant
Là, je parcours les lignes pour chercher si le Siret est présent.
Si oui: je recopie la plage des cellules pour mettre à jour les données
Si Non, alors je l'ajoute après la dernière ligne de cet onglet région
Je fais un collage spécial pour ne pas prendre les formules, mais juste les valeurs.


Bon, étant totalement novice, j'essaie de faire un truc mais ça ressemeble pas à grand chose.

Voici le code que j'ai fait:

Code:
Dim Cellule As Range
Dim Reg,siret,Plage As String
Dim i,j  As Integer
Dim Flag As Boolean

Flag = False
i = 7 'Mes données de l'onglet Datas débutent à la ligne 7
j = 2 'Mes données dans les onglets région débutent à ligne 2
Debut:
With Worksheets("Datas")

Plage = ("A" & i & ":" & "AF" & i) 'la plage de cellules que je vais copier
 Do While Not (IsEmpty(.Range("b" & i))) Or (.Range("b" & i)) <> ""  'je parcours mon onglet Datas tant que j'ai des valeurs dans la colonne
    Reg = .Range("AA" & i).Value 'je récupère la valeur de la Région pour atteindre l'onglet qui m'intéresse
    Siret = .Range("b" & i).Value 'Je récupère le Siret pour le comparer aux sirets préset dans l'onglet région
    With Worksheets(Reg) 'je vais dans le bon onglet Région
        Do While Not (IsEmpty(.Range("b" & j))) Or (.Range("b" & j)) <> "" 'je parcours les sirets dans l'onglet Région
            If (.Range("b" & j).Value = Siret) Then
            Flag = True 'Siret trouvé
            Worksheets("Datas").Range(Plag).Copy
            Worksheets(Reg).Range("A" & j).PasteSpecial Paste:=xlPasteValues 'je copie les valeurs dans l'onglet région
'Après je me perds! :p à savoir si je le trouve pas, je copie après le dernier enregistrement de l'onglet région
           'Range("b" & j).Select
            End If
            j = j + 1
            i = i + 1
            GoTo Debut
        Loop
    Worksheets("Datas").Range(Plag).Copy
    Worksheets(Reg).Range("A" & j).PasteSpecial Paste:=xlPasteValues
    End With


i = i + 1
GoTo Debut

Loop
i = i + 1
End With
End Sub


Bon, c'est un code de débutant VBA! Soyez indulgents!

Merci pour votre aide!
 

Baramine

XLDnaute Nouveau
Re : Mise à jour d'onglets sous condition

J'ai revu un peu mon code:

Code:
Sub MAJREG()
Dim i, j, v, w As Long
Dim Reg, Siret, Plage As String

i = 7
j = 2

Dim Dat, Region As Worksheet

  Set Dat = Sheets("Datas")
  
    
    
    w = Sheets("Datas").Range("B7:B65536").End(xlDown).Row
    For i = 7 To w
    With Sheets("Datas")
    Reg = .Range("AA" & i).Value
    Siret = .Range("D" & i).Value
    Plage = ("A" & i & ":" & "AF" & i)
  
        With Sheets(Reg)
            'Recherche le nombre de lignes
            v = Sheets(Reg).Range("D65536").End(xlUp).Row + 1
                x = v
                If (.Range("D" & x).Value = Siret) Then
                    Flag = True
                    Worksheets("Datas").Range(Plage).Copy
                    Worksheets(Reg).Range("A" & x).PasteSpecial Paste:=xlPasteValues ' Colle en valeur
                    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                    SkipBlanks:=True, Transpose:=False 'Colle en format
                    Application.CutCopyMode = False
                    x = x + 1
                    
'                    j = j + 1
                End If
            x = x + 1
                        
            Worksheets("Datas").Range(Plage).Copy
            Worksheets(Reg).Range("A" & x).PasteSpecial Paste:=xlPasteValues 'Collage valeur
            Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=True, Transpose:=False 'Collage format
            Application.CutCopyMode = False
        End With
    End With
Fin:


    Next i


End Sub

Je ne sais pas si c'est optimisé mais bon je trouver que c'est très long :(
 

Discussions similaires

Réponses
2
Affichages
163

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso