Comparer le contenu de 2 plages de cellules

Bonjour à tous,

Mon problème est le suivant : je dispose de 2 feuilles de calcul, une appelée "Automatisation" qui contient en colonne A une liste des communes et en colonne B les effectifs par commune (cette dernière est à compléter) ; la seconde feuille "Base publique" contient en colonne A une chaîne de caractère contenant la commune, le nom d'un établissement scolaire et d'autres informations quelconques qui peuvent être placées entre la commune et le nom de l'établissement ou après ce dernier. En colonne B pour cette 2eme feuille, on a les effectifs par établissement scolaire.

Je souhaite en fait avec une macro parcourir la colonne A de la feuille "Automatisation" pour demander que s'il trouve la chaîne de caractères (c'est-à-dire le nom de la commune) en parcourant la colonne A de la feuille "Base publique", il garde en mémoire l'effectif de cet établissement, puis il somme les effectifs s'il repère plusieurs fois la commune.

J'ai déjà quasiment tout le code, mais je n'arrive pas trouver comment rechercher chaque commune.

Pour être plus concret, voici un exemple :

Feuille "Base publique"

A B

ABBARETZ LOUIS DAVY X

ARTHON EN RETZ (LA SICAUDAIS) CHARLES PERRAULT X

Feuille "Automatisation"

A B

ABBARETZ (à remplir)

ARTHON EN RETZ (à remplir)

Il ne s'agit donc pas d'une simple comparaison de cellules, mais une recherche d'un contenu d'une cellule dans un contenu d'une autre cellule. Malgré toutes mes recherches, je n'ai encore pas trouvé de réponse.

Merci d'avance pour votre aide

Bonjour,

C'est possible de voir ton fichier ? ce sera plus facile de donner la bonne solution sans devoir tout refaire

Amicalement

Voilà un fichier d'exemple, les effectifs étant fictifs.

188automatisation.xlsm (8.82 Ko)

Re,

je vois déjà un souci là. Tu as fait un retour chariot à chaque ligne pour indiquer le nom.

Pas bon dans VBA d'avoir cela

Pour quoi ne pas mettre le nom en colonne B ??

A te relire

Le retour chariot est de base, je ne l'ai pas rajouté, et l'extraction m'a l'air assez délicate puisque qu'il n'y a pas que la commune avant le retour chariot (comme dans le fichier).

Bonjour,

Une solution avec la méthode Find

229exemple.xlsm (19.84 Ko)

A+

Re,

Essaie avec ce code à placer dans un module en VBA

Ensuite te mettre sur la feuille 2 et excéuter le code

Sub test()
'Dan
Dim i As Integer, lg As Integer
With Sheets("Base Publique")
Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    lg = plage.Find(Range("A" & i), LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False).Row
    Range("B" & i) = .Range("B" & lg)
Next
End With
End Sub

Si ok, lcique sur le V vert à coté du bouton EDITER pour cloturer le fil

Amicalement

Bonsoir,

merci pour ton code, il fonctionne parfaitement une fois adapté.

J'ai seulement un problème, c'est qu'il cherche le mot et non la commune.

Je m'explique : si par exemple j'ai les communes de BLAIN et ST HERBLAIN, pour la commune de BLAIN, il va compter les effectifs de ST HERBLAIN aussi (puisqu'on retrouve ST HER-BLAIN).

Je pense qu'une solution serait de tenir compte de la casse, mais je ne vois pas du tout comment faire.

Merci de votre aide si vous avez la solution.

Re,

Dans l'intruction de recherche (PLAGE.FIND.... ), remplace le FALSE dans MATCHCASE par TRUE

Amicalement

Rechercher des sujets similaires à "comparer contenu plages"