XL 2016 Remplissage automatique secteur selon nom de ville

ISA48

XLDnaute Nouveau
Bonjour la communauté!!

Un problème mineur pour vous mais majeur pour moi...
J'ai une extraction commerciale avec le listing de mes clients, numéro de facture, CA...et j'aimerais sectoriser les villes (NORD/SUD/EST/OUEST) automatiquement dans ma BDD en colonne G de la feuille 1.

Mes villes sont classées par secteur en feuille 2 et j'aimerais qu'elles se rattachent automatiquement en feuille 1 colonne G selon la ville renseignée en colonne F.

Clair? Pas clair? A l'aide? Au secours! HELP!
 

Pièces jointes

  • Stat Ca par secteur Hercule envoi.xlsx
    88.3 KB · Affichages: 20

soan

XLDnaute Barbatruc
Inactif
Bonsoir Isabelle,

bienvenue sur le site XLD ! :)

ton fichier en retour ; ce qui suit est sur "Feuil1".

* en F2, saisis "Artix" ➯ en G2 : "NORD"

* avec la touche Suppression, efface ce que tu viens
de saisir en F2 ➯ ça efface le contenu de G2

* en F2, saisis "Gan" ➯ en G2 : "OUEST"

* en F2, saisis "Venise" ➯ en G2 : rien, car cette ville n'est pas dans tes données ! ben non, mais c'est normal : les jolies gondoles, c'est en Italie, pas en France ! 😄

ça marche pareil pour toutes les lignes en dessous, et c'est indépendant de la casse : si tu avais saisi "gan" au lieu de "Gan", ça aurait quand même trouvé "OUEST" ; par contre, si ça a bien trouvé "NORD" pour "Artix", c'est uniquement car en "Feuil2", j'ai corrigé ton erreur de la cellule A2 : au lieu de "Artix" tu avais mis "Artix " (avec un espace en trop à droite) ; eh oui, ce n'est pas pareil, hein ? 😜



code VBA du module de "Feuil1" :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sh As Worksheet, Ville$, cel As Range, i As Byte
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 6 Then Exit Sub
    If .Row = 1 Then Exit Sub
    Ville = .Value: Application.ScreenUpdating = 0
    .Offset(, 1) = "": If Ville = "" Then Exit Sub
    Set sh = Worksheets("Feuil2")
    For i = 1 To 4
      Set cel = sh.Columns(i).Find(Ville, , -4163, 1, 1)
      If Not cel Is Nothing Then
        .Offset(, 1) = sh.Cells(1, i): Exit Sub
      End If
    Next i
  End With
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. ;)

soan
 

Pièces jointes

  • Stat Ca par secteur Hercule envoi.xlsm
    94.2 KB · Affichages: 11
Dernière édition:

ISA48

XLDnaute Nouveau
Bonsoir et merci pour ton rapide retour qui a égayé notre soirée!!!
Nous avons adoré nous évader sur les gondoles de Venise le temps d'un instant :cool:
Ton code est magique!!!C'est génial!!
Par contre, cela ne fonctionne pas si je copie colle les villes ou que j'exporte les données...alors que j'ai bien copié collé le code VBA... punaise je suis une blonde, je me supporte plus...

Désolée de notre novicité...oui parce'que en plus nous sommes 2 moldus à galérer!
 

soan

XLDnaute Barbatruc
Inactif
@ISA48

Ton code est magique!!! C'est génial!!

merci pour ton retour ! 😊



Par contre, cela ne fonctionne pas si je copie colle les villes ou que j'exporte les données... alors que j'ai bien copié collé le code VBA...

ah oui, mais ça c'est normal que ça ne fonctionne pas ! 😄 le code VBA que j'ai fait est pour une saisie au fur et à mesure, une seule ville à la fois ! pour plusieurs villes d'un coup, « c'est pas étudié pour », comme dirait Fernand Raynaud ! 😜 il faut procéder autrement : ce n'est plus une macro événementielle qui va faire le job « à la volée » lors de la saisie de l'utilisateur ; c'est une sub classique non événementielle qui va faire le job « après-coup » sur l'ensemble des villes, celles que tu auras copié / collé ou importé dans ton fichier (pas exporté ! ne confonds pas émigration et immigration ! ni exil et retour au pays natal ; enfin bref, tu m'as compris... 😁).

je veux bien faire un nouveau code VBA pour ça, mais comme j'ai pas trop envie de perdre du temps à saisir plusieurs villes en colonne F, lignes 2 à 1048576, je te laisse le soin de le faire ; bon allez, je plaisante : une petite centaine de villes devrait suffire ; non ? alors 50 ? non plus ? ok, je t'autorise à couper la poire en 2 : disons au moins 30. 😛


punaise je suis une blonde, je me supporte plus...

je suis persuadé que la 2ème partie de mon post #92 t'intéressera beaucoup ! 😁 😃 😄

soan
 

ISA48

XLDnaute Nouveau
@ISA48



merci pour ton retour ! 😊





ah oui, mais ça c'est normal que ça ne fonctionne pas ! 😄 le code VBA que j'ai fait est pour une saisie au fur et à mesure, une seule ville à la fois ! pour plusieurs villes d'un coup, « c'est pas étudié pour », comme dirait Fernand Raynaud ! 😜 il faut procéder autrement : ce n'est plus une macro événementielle qui va faire le job « à la volée » lors de la saisie de l'utilisateur ; c'est une sub classique non événementielle qui va faire le job « après-coup » sur l'ensemble des villes, celles que tu auras copié / collé ou importé dans ton fichier (pas exporté ! ne confonds pas émigration et immigration ! ni exil et retour au pays natal ; enfin bref, tu m'as compris... 😁).

je veux bien faire un nouveau code VBA pour ça, mais comme j'ai pas trop envie de perdre du temps à saisir plusieurs villes en colonne F, lignes 2 à 1048576, je te laisse le soin de le faire ; bon allez, je plaisante : une petite centaine de villes devrait suffire ; non ? alors 50 ? non plus ? ok, je t'autorise à couper la poire en 2 : disons au moins 30. 😛




je suis persuadé que la 2ème partie de mon post #92 t'intéressera beaucoup ! 😁 😃 😄

soan
Tu me vends du rêve, j'adore!!! Tu as pas une newsletter à laquelle s'abonner pour avoir une dose de bonne humeur et de dérision quotidienne? Ou hebdomadaire au moins? Bon ok, même mensuelle je prends !!!

Pour le code, je me disais bien qu'il y avait un truc...avec des villes c'est mieux ou toujours pas?
Faut vraiment que je mobilise mon CPF pour une formation approfondie sur Excel (que j'affectionne vraiment) car je veux être comme toi quand je serai plus grande!!!
 

Pièces jointes

  • Stat Ca par secteur Hercule envoi.xlsm
    49.9 KB · Affichages: 7

merinos

XLDnaute Accro
Salut @ISA48 ,

Je t'invite a regarder la feuille limitation indirecte ... tu vas gagner en temps

tu peux travailler de 2 facon: soit tu introduit la commune et le secteur vient tout seul... (ton fichier transformé)
soit tu selectionne le secteur et la liste de commune est reduits a celles du secteur (comme dans mon exemple).

Cependant, Excel n'est pas un outil de gestion... ce que tu veux réaliser sera BEAUCOUP plus efficasse et facile en Access.
 

Pièces jointes

  • limitation indirecte.xlsx
    51.2 KB · Affichages: 6
  • Stat Ca par secteur Hercule envoi.xlsx
    107.1 KB · Affichages: 8

soan

XLDnaute Barbatruc
Inactif
Bonsoir Isabelle, merinos,

merci pour ton nouveau fichier avec plus de 700 villes en colonne F : ça s'est avéré parfait pour faire ma toute nouvelle macro ! 👍 sur "Feuil1", fais Ctrl e ➯ travail effectué ! 😊 l'ennui, c'est que le plus dur reste à faire : tu vas devoir te coltiner tout le job de vérification des résultats ! 😁 😜 quelle morne perspective, hein ? hélas, je n'ai pas de macro à te proposer pour faire cette vérif à ta place... (on ne peut pas tout avoir, n'est-ce pas ? faudra faire avec...)



code VBA de Module1 (33 lignes) :

VB:
Option Explicit: Option Compare Text

Sub Secteurs()
  If ActiveSheet.Name <> "Feuil1" Then Exit Sub
  Dim m&, n1&: m = Rows.Count
  n1 = Cells(m, 6).End(3).Row: If n1 = 1 Then Exit Sub
  Dim T1, T2, S&(1 To 4), v$, n2&, k&, i&, j&
  n2 = Cells(m, 7).End(3).Row: Application.ScreenUpdating = 0
  If n2 > 1 Then [G2].Resize(n2 - 1).ClearContents
  With Worksheets("Feuil2")
    For i = 1 To 4
      n2 = .Cells(m, i).End(3).Row
      S(i) = n2: If n2 > k Then k = n2
    Next i
    If k = 1 Then Exit Sub
    T2 = .[A1].Resize(k, 4)
  End With
  n1 = n1 - 1: T1 = [F2].Resize(n1, 2)
  For i = 1 To n1
    v = Trim$(Replace$(T1(i, 1), Chr$(160), " "))
    If v <> "" Then
      For k = 1 To 4
        For j = 2 To S(k)
          If Trim$(Replace$(T2(j, k), Chr$(160), " ")) = v _
            Then T1(i, 2) = T2(1, k): GoTo 1
        Next j
      Next k
    End If
1 Next i
  [G2].Resize(n1) = Application.Index(T1, _
    Evaluate("Row(" & "1:" & n1 & ")"), 2)
End Sub

le service est toujours garanti : si tu as besoin d'une
petite adaptation, n'hésite pas à demander. 😉


soan
 

Pièces jointes

  • Stat Ca par secteur Hercule envoi v2.xlsm
    53.5 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25