Macro pour trouver la région de chaque Numéro département

Bonjour à tous,

Je souhaiterai obtenir une macro qui me trouve la région correspond à chaque numéro de département,

dans le fichier Excel sur la colonne G y a tout les numéros des département Serait-il possible d'avoir sur la colonne H la région de chaque département.

Avez-vous une macro a me proposer svp

En PJ un exemple simple pour illustrer ce que je souhaiterais faire.

Merci!

108version1.xlsx (12.19 Ko)

bonjour

crée un onglet avec une table listant tous les département et en face les régions

dans ton onglet 1, en H2

= RECHERCHEV(G2;latable;2)

Bonjour,

avec la plage L9:N18 nommée --> plg

une formule matricielle à valider avec ctrl+maj+enter

=SI(MAX(SI(plg=G2*1;COLONNE(plg)))=0;"";INDEX($9:$9;MAX(SI(plg=G2*1;COLONNE(plg)))))

Merci pour vos réponses

Il n'y a pas un code Excel qui fait ce travail au lieu de mettre une formule ?

Merci d'avance


Code VBA je veux dire !!

re

jamais de VBA pour ce qui peut être fait par formule.

as-tu vu ma signature ?

Bonsoir à tous,

Essaie ceci :

Option Explicit
Sub test()
Dim a, i As Long, j As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    a = Sheets("Feuil1").[L9].CurrentRegion.Value
    For i = 2 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            dico(CStr(a(i, j))) = a(1, j)
        Next
    Next
    Application.ScreenUpdating = False
    With Sheets("Feuil1").[a1].CurrentRegion
        With .Offset(1).Resize(.Rows.Count - 1)
            .Columns(8).ClearContents
        End With
        For i = 2 To .Rows.Count
            If dico.exists(.Cells(i, 7).Value) Then
                .Cells(i, 8).Value = dico(.Cells(i, 7).Value)
            End If
        Next
    End With
    Application.ScreenUpdating = True
End Sub

kiln89

Salut Salouaji,

là, je reconnais que jmd a parfaitement raison... même si je préfère VBA!

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim tTab
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("G:G")) Is Nothing Then
    tTab = Range("L9:N18")
    For x = 2 To UBound(tTab, 1)
        For y = 1 To UBound(tTab, 2)
            If tTab(x, y) = Target.Value Then
                Target.Offset(0, 1) = tTab(1, y)
                Application.EnableEvents = True
                Exit Sub
            End If
        Next
    Next
End If
'
Application.EnableEvents = True
'
End Sub

A+

Bonjour Salouaji et à vous tous,

c'est plaisant de voir autant de bonnes solutions si variées

et pourquoi pas une autre qui combine vba macro et function

la function Région peut être utilisée sur la feuille

=Région($L$9:$N$18;G2)

ou bien avec une macro ( voir la macro test)

Sub test()
Dim i As Long, NBligne As Long
Application.ScreenUpdating = False
 NBligne = ActiveSheet.Cells(Rows.Count, 7).End(xlUp).Row 'colonne G
 For i = 2 To NBligne
  Range("H" & i) = Région(Range("L9:N18"), Range("G" & i))
 Next
End Sub

Public Function Région(plageRégion As Range, Départ As Range) As String
Dim r As Integer, v As Integer, plg As String
r = plageRégion(1).Row
v = Val(Départ) * 1
plg = plageRégion.Address
 If Evaluate("MAX(IF(" & plg & "=" & v & ",COLUMN(" & plg & ")))") = 0 Then
   Région = ""
 Else
   Région = Cells(r, plageRégion.Find(v, LookIn:=xlValues).Column)
 End If
End Function

Bonjour,

Une proposition (habituelle) avec :

  • La mise en forme des données sous forme de tableau
    La normalisation des donnée départements/Régions
    L'utilisation de la formule RECHERCHEV
Cdlt.

113version1.xlsx (18.20 Ko)

salut à tous

Jean-Eric, tu as fait un boulot propre et net.

un vrai boulot excellien et excellent

bon WE à tous

Bonjour jmd,

Merci pour ton commentaire.

J'ai oublié de noter la MFC.

Cdlt.

Bonjour le Forum,

Question sur le fichier initial :

La structure du champ "NE Name" n'étant pas cohérente (Cf cellule F4), est-il normal que la cellule G4 retourne 70 ?

A priori elle devrait indiquer 67.

Bonjour à tous,

Super bon boulot a vous tous.

jmd j'ai vu ta signature c'est noté

je vous remercierai jamais assez !!!

là je peux dire que bravo à vous tous et merci encore une fois pour votre aide

bon WE à tous !!!!!!!!!!!

Bonjour JLF

Tout à fait d'accord moi aussi j'ai remarqué ça

pour moi je change la formule sur la cellule G4 au lieu de =STXT(F4;6;2) j'ai mis =STXT(F4;5;2) comme ça j'ai eu 70 mais je pense pas que ma solution efficace.

si nous avons un fichier avec 1000 lignes par exemple il faut a chaque fois changer la formule qui sors les deux chiffre de département !!!!!!!!!!!!!

à mon coté je suis toujour en train de trouver une formule ou ajouter une boucle sur le code pour trouver la solutions !!!

Si la structure sur TOUTE la colonne est : ......-NN.........

avec NN le numéro du département à extraire, je vous propose de tester la formule suivante en G2 :

=STXT(F2;TROUVE("-";F2)+1;2)

Bonjour

je l'ai essayé ça marche très bien

merci bien

bon dimanche

Re-bonjour

je reviens vers vous prcq je n'ai besoin d'aide s'il vous plait .

Lorsque je lance le code, j'ai cette erreur [erreur d'execution 13 type incompatible]

je lance de Débogage et il me renvois ici :

 v = Val(Départ) * 1 

je ne comprend vraiment pas pourquoi il bloque

je joint le fichier pour qui auraient besoin de plus d'infos.

le code c'est :

Dim i As Long, NBligne As Long
Application.ScreenUpdating = False
 NBligne = ActiveSheet.Cells(Rows.Count, 7).End(xlUp).Row 'colonne G
For i = 1 To NBligne
  Range("H" & i) = Région(Range("L9:N32"), Range("G" & i))
 Next
End Sub

Public Function Région(plageRégion As Range, Départ As Range) As String
Dim r As Integer, v As Integer, plg As String
r = plageRégion(1).Row
v = Val(Départ) * 1
plg = plageRégion.Address
 If Evaluate("MAX(IF(" & plg & "=" & v & ",COLUMN(" & plg & ")))") = 0 Then
   Région = ""
 Else
   Région = Cells(r, plageRégion.Find(v, LookIn:=xlValues).Column)
 End If
End Function

merci d'avance !

Bonjour,

Une nouvelle proposition à étudier.

Cdlt.

27xlp-salouaji.xlsm (35.16 Ko)
Rechercher des sujets similaires à "macro trouver region chaque numero departement"