Macro matrice codes pays

Signaler
Messages postés
1
Date d'inscription
lundi 5 octobre 2020
Statut
Membre
Dernière intervention
5 octobre 2020
-
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
-
Bonjour,


J'ai une matrice qui contient avec dans une colonne les noms de 300 pays et à côté leur code abrégé.



Maintenant j'ai un autre fichier dans lequel se trouvent les pays en toutes lettres. J'aimerai remplacer ces pays par leurs codes par le biais d'un macro.



J'ai testé avec un RECHERCHEV mais le problème est que les données de la matrice des codes pays ne seront pas contenues dans les fichiers sur lesquels la macro s'effectuera. Il serait donc préférable pour moi que cette matrice pays/codes soit directement contenue dans le code de la macro.

Merci pour votre aide !

Configuration: Windows / Chrome 85.0.4183.121 / Excel 2019

4 réponses

Messages postés
2287
Date d'inscription
samedi 16 février 2019
Statut
Membre
Dernière intervention
23 octobre 2020
369
Bonjour,

Il va falloir une macro pour écrire la macro ^^ Parce-que sans base de donnée externe ça va être une sacré usine à gaz ^^

Juste pour donner un point de départ ont pourrait essayer un truc du genre :

For Each cell in Worksheets("Exemple").Range("E1:E100") 'Boucle sur la plage de donnée concernée
   If cell.Value = "Afghanistan" Then 'Si la cellule contient tel pays
      cell.Value = "AF" ' Alors on remplace par sont code
         ElseIf cell.Value = "Åland Island" Then ' Sinon on recommence avec pays suivant
                      cell.Value = "AX"
             ElseIf cell.Value = "XXXXX" Then 'Etc, etc 300 fois...
                          cell.Value = "XX"
   End If 
Next cell


A mon tout petit niveau, il y'a certainement une meilleur solution, parce que là ça va mettre 3 heure à écrire ...

Cdlt.
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
Bonjour,

effectivement, tu peux faire simple, pour ma part j'ouvrirais un nouveau onglet sur le deuxième fichier et je copierais tout simplement ta liste de pays avec les codes abrégés.

ensuite dans une colonne vide de ce fichier à droite de la colonne Country j'utiliserais une simple formule RECHERCHEV faisant référence aux pays de cette colonne qui par exemple est colonne G
=RECHERCHEV(G2;la matrice importée;2;0) et incrémenté vers le bas
et pour terminer sélectionner la colonne ou se trouve tes formule RECHERCHEV COPIER
sélectionner G2 COLLAGE SPECIAL/COCHER VALEUR et OK
cela va remplacer les pays par les codes

tu peux supprimer la colonne de tes formules RECHERCHEV et l'onglet créé ou tu as importé ta matrice pays avec code abrégés
en trois ou quatre clics de souris et 30 secondes le tour est joué
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
2287
Date d'inscription
samedi 16 février 2019
Statut
Membre
Dernière intervention
23 octobre 2020
369
C'est ce que j'appelait une base de donnée "externe" effectivement ça simplifierait grandement les choses, mais il faut voir les contraintes de Exclem ;)
Messages postés
17292
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
24 octobre 2020
4 302
Re,

s'il s'agit de deux fichiers Excel il ne doit pas y avoir de problème, dans un premier temps on importe les données/ une RECHERCHEV en face chaque pays et on fixe le résultat avec un Copier/collage spécial/Valeur, tout simplement
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
Bonjour le Fil,

«Il serait donc préférable pour moi que cette matrice pays/codes soit directement contenue dans le code de la macro. »

Pour le Fun :
  MsgBox CodePays("France") & vbCrLf & _
         CodePays("Korea (the Republic of)") & vbCrLf & _
         CodePays("Jupiter")

La fonction :
Function CodePays(pays As String) As String
  Select Case pays
    Case "Afghanistan": CodePays = "AF"
    Case "Åland Islands": CodePays = "AX"
    Case "Albania": CodePays = "AL"
    Case "Algeria": CodePays = "DZ"
    Case "American Samoa": CodePays = "AS"
    Case "Andorra": CodePays = "AD"
    Case "Angola": CodePays = "AO"
    Case "Anguilla": CodePays = "AI"
    Case "Antarctica": CodePays = "AQ"
    Case "Antigua and Barbuda": CodePays = "AG"
    Case "Argentina": CodePays = "AR"
    Case "Armenia": CodePays = "AM"
    Case "Aruba": CodePays = "AW"
    Case "Australia": CodePays = "AU"
    Case "Austria": CodePays = "AT"
    Case "Azerbaijan": CodePays = "AZ"
    Case "Bahamas (the)": CodePays = "BS"
    Case "Bahrain": CodePays = "BH"
    Case "Bangladesh": CodePays = "BD"
    Case "Barbados": CodePays = "BB"
    Case "Belarus": CodePays = "BY"
    Case "Belgium": CodePays = "BE"
    Case "Belize": CodePays = "BZ"
    Case "Benin": CodePays = "BJ"
    Case "Bermuda": CodePays = "BM"
    Case "Bhutan": CodePays = "BT"
    Case "Bolivia (Plurinational State of)": CodePays = "BO"
    Case "Bonaire, Sint Eustatius and Saba": CodePays = "BQ"
    Case "Bosnia and Herzegovina": CodePays = "BA"
    Case "Botswana": CodePays = "BW"
    Case "Bouvet Island": CodePays = "BV"
    Case "Brazil": CodePays = "BR"
    Case "British Indian Ocean Territory (the)": CodePays = "IO"
    Case "Brunei Darussalam": CodePays = "BN"
    Case "Bulgaria": CodePays = "BG"
    Case "Burkina Faso": CodePays = "BF"
    Case "Burundi": CodePays = "BI"
    Case "Cabo Verde": CodePays = "CV"
    Case "Cambodia": CodePays = "KH"
    Case "Cameroon": CodePays = "CM"
    Case "Canada": CodePays = "CA"
    Case "Cayman Islands (the)": CodePays = "KY"
    Case "Central African Republic (the)": CodePays = "CF"
    Case "Chad": CodePays = "TD"
    Case "Chile": CodePays = "CL"
    Case "China": CodePays = "CN"
    Case "Christmas Island": CodePays = "CX"
    Case "Cocos (Keeling) Islands (the)": CodePays = "CC"
    Case "Colombia": CodePays = "CO"
    Case "Comoros (the)": CodePays = "KM"
    Case "Congo (the Democratic Republic of the)": CodePays = "CD"
    Case "Congo (the)": CodePays = "CG"
    Case "Cook Islands (the)": CodePays = "CK"
    Case "Costa Rica": CodePays = "CR"
    Case "Croatia": CodePays = "HR"
    Case "Cuba": CodePays = "CU"
    Case "Curaçao": CodePays = "CW"
    Case "Cyprus": CodePays = "CY"
    Case "Czechia": CodePays = "CZ"
    Case "Denmark": CodePays = "DK"
    Case "Djibouti": CodePays = "DJ"
    Case "Dominica": CodePays = "DM"
    Case "Dominican Republic (the)": CodePays = "DO"
    Case "Ecuador": CodePays = "EC"
    Case "Egypt": CodePays = "EG"
    Case "El Salvador": CodePays = "SV"
    Case "Equatorial Guinea": CodePays = "GQ"
    Case "Eritrea": CodePays = "ER"
    Case "Estonia": CodePays = "EE"
    Case "Eswatini": CodePays = "SZ"
    Case "Ethiopia": CodePays = "ET"
    Case "Falkland Islands (the) [Malvinas]": CodePays = "FK"
    Case "Faroe Islands (the)": CodePays = "FO"
    Case "Fiji": CodePays = "FJ"
    Case "Finland": CodePays = "FI"
    Case "France": CodePays = "FR"
    Case "French Guiana": CodePays = "GF"
    Case "French Polynesia": CodePays = "PF"
    Case "French Southern Territories (the)": CodePays = "TF"
    Case "Gabon": CodePays = "GA"
    Case "Gambia (the)": CodePays = "GM"
    Case "Georgia": CodePays = "GE"
    Case "Germany": CodePays = "DE"
    Case "Ghana": CodePays = "GH"
    Case "Gibraltar": CodePays = "GI"
    Case "Greece": CodePays = "GR"
    Case "Greenland": CodePays = "GL"
    Case "Grenada": CodePays = "GD"
    Case "Guadeloupe": CodePays = "GP"
    Case "Guam": CodePays = "GU"
    Case "Guatemala": CodePays = "GT"
    Case "Guernsey": CodePays = "GG"
    Case "Guinea": CodePays = "GN"
    Case "Guinea-Bissau": CodePays = "GW"
    Case "Guyana": CodePays = "GY"
    Case "Haiti": CodePays = "HT"
    Case "Heard Island and McDonald Islands": CodePays = "HM"
    Case "Holy See (the)": CodePays = "VA"
    Case "Honduras": CodePays = "HN"
    Case "Hong Kong": CodePays = "HK"
    Case "Hungary": CodePays = "HU"
    Case "Iceland": CodePays = "IS"
    Case "India": CodePays = "IN"
    Case "Indonesia": CodePays = "ID"
    Case "Iran (Islamic Republic of)": CodePays = "IR"
    Case "Iraq": CodePays = "IQ"
    Case "Ireland": CodePays = "IE"
    Case "Isle of Man": CodePays = "IM"
    Case "Israel": CodePays = "IL"
    Case "Italy": CodePays = "IT"
    Case "Ivory Coast": CodePays = "CI"
    Case "Jamaica": CodePays = "JM"
    Case "Japan": CodePays = "JP"
    Case "Jersey": CodePays = "JE"
    Case "Jordan": CodePays = "JO"
    Case "Kazakhstan": CodePays = "KZ"
    Case "Kenya": CodePays = "KE"
    Case "Kiribati": CodePays = "KI"
    Case "Korea (the Democratic People's Republic of)": CodePays = "KP"
    Case "Korea (the Republic of)": CodePays = "KR"
    Case "Kuwait": CodePays = "KW"
    Case "Kyrgyzstan": CodePays = "KG"
    Case "Lao People's Democratic Republic (the)": CodePays = "LA"
    Case "Latvia": CodePays = "LV"
    Case "Lebanon": CodePays = "LB"
    Case "Lesotho": CodePays = "LS"
    Case "Liberia": CodePays = "LR"
    Case "Libya": CodePays = "LY"
    Case "Liechtenstein": CodePays = "LI"
    Case "Lithuania": CodePays = "LT"
    Case "Luxembourg": CodePays = "LU"
    Case "Macao": CodePays = "MO"
    Case "Madagascar": CodePays = "MG"
    Case "Malawi": CodePays = "MW"
    Case "Malaysia": CodePays = "MY"
    Case "Maldives": CodePays = "MV"
    Case "Mali": CodePays = "ML"
    Case "Malta": CodePays = "MT"
    Case "Marshall Islands (the)": CodePays = "MH"
    Case "Martinique": CodePays = "MQ"
    Case "Mauritania": CodePays = "MR"
    Case "Mauritius": CodePays = "MU"
    Case "Mayotte": CodePays = "YT"
    Case "Mexico": CodePays = "MX"
    Case "Micronesia (Federated States of)": CodePays = "FM"
    Case "Moldova (the Republic of)": CodePays = "MD"
    Case "Monaco": CodePays = "MC"
    Case "Mongolia": CodePays = "MN"
    Case "Montenegro": CodePays = "ME"
    Case "Montserrat": CodePays = "MS"
    Case "Morocco": CodePays = "MA"
    Case "Mozambique": CodePays = "MZ"
    Case "Myanmar": CodePays = "MM"
    Case "Namibia": CodePays = "NA"
    Case "Nauru": CodePays = "NR"
    Case "Nepal": CodePays = "NP"
    Case "Netherlands (the)": CodePays = "NL"
    Case "New Caledonia": CodePays = "NC"
    Case "New Zealand": CodePays = "NZ"
    Case "Nicaragua": CodePays = "NI"
    Case "Niger (the)": CodePays = "NE"
    Case "Nigeria": CodePays = "NG"
    Case "Niue": CodePays = "NU"
    Case "Norfolk Island": CodePays = "NF"
    Case "North Macedonia": CodePays = "MK"
    Case "Northern Mariana Islands (the)": CodePays = "MP"
    Case "Norway": CodePays = "NO"
    Case "Oman": CodePays = "OM"
    Case "Pakistan": CodePays = "PK"
    Case "Palau": CodePays = "PW"
    Case "Palestine, State of": CodePays = "PS"
    Case "Panama": CodePays = "PA"
    Case "Papua New Guinea": CodePays = "PG"
    Case "Paraguay": CodePays = "PY"
    Case "Peru": CodePays = "PE"
    Case "Philippines (the)": CodePays = "PH"
    Case "Pitcairn": CodePays = "PN"
    Case "Poland": CodePays = "PL"
    Case "Portugal": CodePays = "PT"
    Case "Puerto Rico": CodePays = "PR"
    Case "Qatar": CodePays = "QA"
    Case "Réunion": CodePays = "RE"
    Case "Romania": CodePays = "RO"
    Case "Russian Federation (the)": CodePays = "RU"
    Case "Rwanda": CodePays = "RW"
    Case "Saint Barthélemy": CodePays = "BL"
    Case "Saint Helena, Ascension and Tristan da Cunha": CodePays = "SH"
    Case "Saint Kitts and Nevis": CodePays = "KN"
    Case "Saint Lucia": CodePays = "LC"
    Case "Saint Martin (French part)": CodePays = "MF"
    Case "Saint Pierre and Miquelon": CodePays = "PM"
    Case "Saint Vincent and the Grenadines": CodePays = "VC"
    Case "Samoa": CodePays = "WS"
    Case "San Marino": CodePays = "SM"
    Case "Sao Tome and Principe": CodePays = "ST"
    Case "Saudi Arabia": CodePays = "SA"
    Case "Senegal": CodePays = "SN"
    Case "Serbia": CodePays = "RS"
    Case "Seychelles": CodePays = "SC"
    Case "Sierra Leone": CodePays = "SL"
    Case "Singapore": CodePays = "SG"
    Case "Sint Maarten (Dutch part)": CodePays = "SX"
    Case "Slovakia": CodePays = "SK"
    Case "Slovenia": CodePays = "SI"
    Case "Solomon Islands": CodePays = "SB"
    Case "Somalia": CodePays = "SO"
    Case "South Africa": CodePays = "ZA"
    Case "South Georgia and the South Sandwich Islands": CodePays = "GS"
    Case "South Sudan": CodePays = "SS"
    Case "Spain": CodePays = "ES"
    Case "Sri Lanka": CodePays = "LK"
    Case "Sudan (the)": CodePays = "SD"
    Case "Suriname": CodePays = "SR"
    Case "Svalbard and Jan Mayen": CodePays = "SJ"
    Case "Sweden": CodePays = "SE"
    Case "Switzerland": CodePays = "CH"
    Case "Syrian Arab Republic (the)": CodePays = "SY"
    Case "Taiwan (Province of China)": CodePays = "TW"
    Case "Tajikistan": CodePays = "TJ"
    Case "Tanzania, the United Republic of": CodePays = "TZ"
    Case "Thailand": CodePays = "TH"
    Case "Timor-Leste": CodePays = "TL"
    Case "Togo": CodePays = "TG"
    Case "Tokelau": CodePays = "TK"
    Case "Tonga": CodePays = "TO"
    Case "Trinidad and Tobago": CodePays = "TT"
    Case "Tunisia": CodePays = "TN"
    Case "Turkey": CodePays = "TR"
    Case "Turkmenistan": CodePays = "TM"
    Case "Turks and Caicos Islands (the)": CodePays = "TC"
    Case "Tuvalu": CodePays = "TV"
    Case "Uganda": CodePays = "UG"
    Case "Ukraine": CodePays = "UA"
    Case "United Arab Emirates (the)": CodePays = "AE"
    Case "United Kingdom of Great Britain and Northern Ireland (the)": CodePays = "GB"
    Case "United States Minor Outlying Islands (the)": CodePays = "UM"
    Case "United States of America (the)": CodePays = "US"
    Case "Uruguay": CodePays = "UY"
    Case "Uzbekistan": CodePays = "UZ"
    Case "Vanuatu": CodePays = "VU"
    Case "Venezuela (Bolivarian Republic of)": CodePays = "VE"
    Case "Viet Nam": CodePays = "VN"
    Case "Virgin Islands (British)": CodePays = "VG"
    Case "Virgin Islands (U.S.)": CodePays = "VI"
    Case "Wallis and Futuna": CodePays = "WF"
    Case "Western Sahara": CodePays = "EH"
    Case "Yemen": CodePays = "YE"
    Case "Zambia": CodePays = "ZM"
    Case "Zimbabwe": CodePays = "ZW"
    Case Else: CodePays = pays
  End Select
End Function



Cordialement
Patrice

Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 2020
1 498
Pour certains pays, il peut y avoir plusieurs dénominations, il suffit d'écrire plusieurs lignes pour un même code, par exemple :
    Case "Marshall Islands (the)": CodePays = "MH"
    Case "Marshall Islands": CodePays = "MH"
    Case "Republic of the Marshall Islands": CodePays = "MH"