La Loire-Atlantique compte 1 497 313 habitants en 2023, dont 25 % ont plus de 60 ans. Le département recense 389 pharmacies pour 473 pharmaciens titulaires, en baisse de 7 % depuis 2019. Les titulaires de plus de 40 ans représentent 78 %. On y compte 623 pharmaciens adjoints, soit 1,6 par officine, avec une évolution de 15 % sur la période. Nous avons identifié 187 ventes d'officines, avec une valeur moyenne de vente dans le département de la Loire-Atlantique à 69% du chiffre d'affaires.
Sur ouipharma.fr, nous avons publié depuis 2015, 22 annonces de pharmacies à vendre, avec un chiffre d'affaires moyen de 1 014 786€HT. Au 15/12/2025, elles ont generé 17666 consultations et il y a eu 49 candidatures à la reprise des officines dans le département Loire-Atlantique.
module ApplicationHelper
# Safely check if an asset is available in the pipeline (dev & prod)
def asset_present?(logical_path)
logical_path = logical_path.to_s
return false if logical_path.blank?
if Rails.application.config.assets.compile
# Development: Sprockets environment is available
!!Rails.application.assets&.find_asset(logical_path)
else
# Production: check compiled manifest
manifest = Rails.application.assets_manifest
manifest && (
(manifest.assets && manifest.assets.key?(logical_path)) ||
(manifest.files && manifest.files.key?(logical_path))
)
end
rescue
false
end
def pictogram(pharmacy, options = {})
options = { image_helper: :image_tag, size: "640_360" }.merge(options)
base_dir = "pictograms/environnement/#{options[:size]}"
img_extension = (options[:format] || "png").to_s
env_slug = (pharmacy.respond_to?(:environnement) && pharmacy.environnement.presence) || "centre-ville"
expected = "#{base_dir}/#{env_slug}.#{img_extension}"
fallback_asset = "placeholders/pharmacy-#{options[:size].tr('x', '_')}.png"
if asset_present?(expected)
send(options[:image_helper], expected, options.merge(alt: "Pharmacie #{env_slug} sur Ouipharma.fr"))
elsif asset_present?(fallback_asset)
send(options[:image_helper], fallback_asset, options.merge(alt: "Pharmacie | Ouipharma.fr"))
else
svg = <<~SVG
Pharmacie
SVG
data_uri = "data:image/svg+xml;utf8,#{ERB::Util.url_encode(svg)}"
send(options[:image_helper], data_uri, options.merge(alt: "Pharmacie | Ouipharma.fr"))
end
end
end
Pharmacie rurale pour un cadre de vie agréable. Commune en développement
44)
module ApplicationHelper
# Safely check if an asset is available in the pipeline (dev & prod)
def asset_present?(logical_path)
logical_path = logical_path.to_s
return false if logical_path.blank?
if Rails.application.config.assets.compile
# Development: Sprockets environment is available
!!Rails.application.assets&.find_asset(logical_path)
else
# Production: check compiled manifest
manifest = Rails.application.assets_manifest
manifest && (
(manifest.assets && manifest.assets.key?(logical_path)) ||
(manifest.files && manifest.files.key?(logical_path))
)
end
rescue
false
end
def pictogram(pharmacy, options = {})
options = { image_helper: :image_tag, size: "640_360" }.merge(options)
base_dir = "pictograms/environnement/#{options[:size]}"
img_extension = (options[:format] || "png").to_s
env_slug = (pharmacy.respond_to?(:environnement) && pharmacy.environnement.presence) || "centre-ville"
expected = "#{base_dir}/#{env_slug}.#{img_extension}"
fallback_asset = "placeholders/pharmacy-#{options[:size].tr('x', '_')}.png"
if asset_present?(expected)
send(options[:image_helper], expected, options.merge(alt: "Pharmacie #{env_slug} sur Ouipharma.fr"))
elsif asset_present?(fallback_asset)
send(options[:image_helper], fallback_asset, options.merge(alt: "Pharmacie | Ouipharma.fr"))
else
svg = <<~SVG
Pharmacie
SVG
data_uri = "data:image/svg+xml;utf8,#{ERB::Util.url_encode(svg)}"
send(options[:image_helper], data_uri, options.merge(alt: "Pharmacie | Ouipharma.fr"))
end
end
end
Pharmacie seule sur son secteur
44)
module ApplicationHelper
# Safely check if an asset is available in the pipeline (dev & prod)
def asset_present?(logical_path)
logical_path = logical_path.to_s
return false if logical_path.blank?
if Rails.application.config.assets.compile
# Development: Sprockets environment is available
!!Rails.application.assets&.find_asset(logical_path)
else
# Production: check compiled manifest
manifest = Rails.application.assets_manifest
manifest && (
(manifest.assets && manifest.assets.key?(logical_path)) ||
(manifest.files && manifest.files.key?(logical_path))
)
end
rescue
false
end
def pictogram(pharmacy, options = {})
options = { image_helper: :image_tag, size: "640_360" }.merge(options)
base_dir = "pictograms/environnement/#{options[:size]}"
img_extension = (options[:format] || "png").to_s
env_slug = (pharmacy.respond_to?(:environnement) && pharmacy.environnement.presence) || "centre-ville"
expected = "#{base_dir}/#{env_slug}.#{img_extension}"
fallback_asset = "placeholders/pharmacy-#{options[:size].tr('x', '_')}.png"
if asset_present?(expected)
send(options[:image_helper], expected, options.merge(alt: "Pharmacie #{env_slug} sur Ouipharma.fr"))
elsif asset_present?(fallback_asset)
send(options[:image_helper], fallback_asset, options.merge(alt: "Pharmacie | Ouipharma.fr"))
else
svg = <<~SVG
Pharmacie
SVG
data_uri = "data:image/svg+xml;utf8,#{ERB::Util.url_encode(svg)}"
send(options[:image_helper], data_uri, options.merge(alt: "Pharmacie | Ouipharma.fr"))
end
end
end
Pharmacie seule au pays.
44)
module ApplicationHelper
# Safely check if an asset is available in the pipeline (dev & prod)
def asset_present?(logical_path)
logical_path = logical_path.to_s
return false if logical_path.blank?
if Rails.application.config.assets.compile
# Development: Sprockets environment is available
!!Rails.application.assets&.find_asset(logical_path)
else
# Production: check compiled manifest
manifest = Rails.application.assets_manifest
manifest && (
(manifest.assets && manifest.assets.key?(logical_path)) ||
(manifest.files && manifest.files.key?(logical_path))
)
end
rescue
false
end
def pictogram(pharmacy, options = {})
options = { image_helper: :image_tag, size: "640_360" }.merge(options)
base_dir = "pictograms/environnement/#{options[:size]}"
img_extension = (options[:format] || "png").to_s
env_slug = (pharmacy.respond_to?(:environnement) && pharmacy.environnement.presence) || "centre-ville"
expected = "#{base_dir}/#{env_slug}.#{img_extension}"
fallback_asset = "placeholders/pharmacy-#{options[:size].tr('x', '_')}.png"
if asset_present?(expected)
send(options[:image_helper], expected, options.merge(alt: "Pharmacie #{env_slug} sur Ouipharma.fr"))
elsif asset_present?(fallback_asset)
send(options[:image_helper], fallback_asset, options.merge(alt: "Pharmacie | Ouipharma.fr"))
else
svg = <<~SVG
Pharmacie
SVG
data_uri = "data:image/svg+xml;utf8,#{ERB::Util.url_encode(svg)}"
send(options[:image_helper], data_uri, options.merge(alt: "Pharmacie | Ouipharma.fr"))
end
end
end
Exclu - Centre ville Nantes
44)