Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Renseigner une cellule à partir d'une autre

9 réponses
Avatar
quidam
Bonjour,
Je m'énerve sur un truc tout simple pour un plus doué....
dans une feuille 2 : j'ai 834 communes en col 3 et leur code insee en col 2
dans une feuille 1 j'ai seulement la commune(2557 enregistrements) en col 4,
et je veux compléter la col 5 avec son code insee

j'ai fait ça (avce l'aide de l'aide excel car je suis complètement novice)
mais ça ne marche pas du tout....

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)

For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this = last Then Cells(j, 5).Value = Cells(k, 2)

Next
Next

Est ce que quelqu'un pourrait me dire où se situe l'erreur...et me rectifier
ça.

Merci

GuY

NB : j'ai cherché dans des précédentes demandes de dépannage, mais le peu
que j'ai trouvé m'a plus embrouillé que dépanné :(

9 réponses

Avatar
Xavier POWAGA
essaye peut être comme ça

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)
For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this.value = last.value Then Cells(j, 5).Value =
Worksheets("Sheet2").Cells(k, 2)
Next
Next

Xavier
"quidam" a écrit dans le message de news:
4437d6a8$0$20273$
Bonjour,
Je m'énerve sur un truc tout simple pour un plus doué....
dans une feuille 2 : j'ai 834 communes en col 3 et leur code insee en col
2
dans une feuille 1 j'ai seulement la commune(2557 enregistrements) en col
4, et je veux compléter la col 5 avec son code insee

j'ai fait ça (avce l'aide de l'aide excel car je suis complètement novice)
mais ça ne marche pas du tout....

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)

For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this = last Then Cells(j, 5).Value = Cells(k, 2)

Next
Next

Est ce que quelqu'un pourrait me dire où se situe l'erreur...et me
rectifier ça.

Merci

GuY

NB : j'ai cherché dans des précédentes demandes de dépannage, mais le peu
que j'ai trouvé m'a plus embrouillé que dépanné :(





Avatar
quidam
Ca ne marche toujours pas
j'ai comme erreur : l'indice n'appartient pas à la sélection- erreur
d'execution 9
et pourtant ma feuille 2 est comme ça:

Abbécourt 02001 ABBECOURT
Achery 02002 ACHERY
Acy 02003 ACY
Agnicourt-et-Séchelles 02004 AGNICOURT-ET-SECHELLES
Aguilcourt 02005 AGUILCOURT
Aisonville-et-Bernoville 02006 AISONVILLE-ET-BERNOVILLE


et ma feuille 1 comme ça:

ABOVILLE D' AUGUSTIN MARIE 1776/04/12 LA FERE
ABOVILLE D' AUGUSTIN GABRIEL 1774/03/20 LA FERE
ABRAHAM EUGENE 1868/09/15 AUBENTON
ABRAHAM ALPHONSE 1857/03/06 FERE-EN-TARDENOIS
ACHILLE LEOPOLD 1844/12/13 VENDEUIL
ACQUART CLAUDE FLORENTIN 1787/02/18 MONTESCOURT-LIZEROLLES
ADAM CHARLES LEON 1899/04/16 NOUVION-LE-COMTE
ADAM JOSEPH RENE 1826/07/20 VESLES-ET-CAUMONT


Il doit y avoir une erreur ENORME.....
mais je ne la vois pas !

Guy

"Xavier POWAGA" a écrit dans le message de news:
44381d9e$0$990$
essaye peut être comme ça

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)
For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this.value = last.value Then Cells(j, 5).Value =
Worksheets("Sheet2").Cells(k, 2)
Next
Next

Xavier
"quidam" a écrit dans le message de news:
4437d6a8$0$20273$
Bonjour,
Je m'énerve sur un truc tout simple pour un plus doué....
dans une feuille 2 : j'ai 834 communes en col 3 et leur code insee en col
2
dans une feuille 1 j'ai seulement la commune(2557 enregistrements) en col
4, et je veux compléter la col 5 avec son code insee

j'ai fait ça (avce l'aide de l'aide excel car je suis complètement
novice) mais ça ne marche pas du tout....

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)

For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this = last Then Cells(j, 5).Value = Cells(k, 2)

Next
Next

Est ce que quelqu'un pourrait me dire où se situe l'erreur...et me
rectifier ça.

Merci

GuY

NB : j'ai cherché dans des précédentes demandes de dépannage, mais le peu
que j'ai trouvé m'a plus embrouillé que dépanné :(









Avatar
quidam
"Xavier POWAGA" a écrit dans le message de news:
44381d9e$0$990$
essaye peut être comme ça

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)
For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this.value = last.value Then Cells(j, 5).Value =
Worksheets("Sheet2").Cells(k, 2)
Next
Next

Xavier
"quidam" a écrit dans le message de news:
4437d6a8$0$20273$
Bonjour,
Je m'énerve sur un truc tout simple pour un plus doué....
dans une feuille 2 : j'ai 834 communes en col 3 et leur code insee en col
2
dans une feuille 1 j'ai seulement la commune(2557 enregistrements) en col
4, et je veux compléter la col 5 avec son code insee

j'ai fait ça (avce l'aide de l'aide excel car je suis complètement
novice) mais ça ne marche pas du tout....

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)

For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this = last Then Cells(j, 5).Value = Cells(k, 2)

Next
Next

Est ce que quelqu'un pourrait me dire où se situe l'erreur...et me
rectifier ça.

Merci

GuY

NB : j'ai cherché dans des précédentes demandes de dépannage, mais le peu
que j'ai trouvé m'a plus embrouillé que dépanné :(






Ca ne marche toujours pas

j'ai comme erreur : l'indice n'appartient pas à la sélection- erreur
d'execution 9
et pourtant ma feuille 2 est comme ça:

Abbécourt 02001 ABBECOURT
Achery 02002 ACHERY
Acy 02003 ACY
Agnicourt-et-Séchelles 02004 AGNICOURT-ET-SECHELLES
Aguilcourt 02005 AGUILCOURT
Aisonville-et-Bernoville 02006 AISONVILLE-ET-BERNOVILLE


et ma feuille 1 comme ça:

ABOVILLE D' AUGUSTIN MARIE 1776/04/12 LA FERE
ABOVILLE D' AUGUSTIN GABRIEL 1774/03/20 LA FERE
ABRAHAM EUGENE 1868/09/15 AUBENTON
ABRAHAM ALPHONSE 1857/03/06 FERE-EN-TARDENOIS
ACHILLE LEOPOLD 1844/12/13 VENDEUIL
ACQUART CLAUDE FLORENTIN 1787/02/18 MONTESCOURT-LIZEROLLES
ADAM CHARLES LEON 1899/04/16 NOUVION-LE-COMTE
ADAM JOSEPH RENE 1826/07/20 VESLES-ET-CAUMONT


Il doit y avoir une erreur ENORME.....
mais je ne la vois pas !

Guy


Avatar
FxM
Bonjour,

Sans VBA et en supposant tes plages comme étant :
dans une feuille 2 :
les 834 communes de C2 à C835

les 834 codes insee de B2 à B835

dans une feuille 1
le premier enregistrement en D4, les suivants recopiés vers le bas


Pour le premier code insee en E4 :
=INDEX(Feuil2!B$2:B$835;EQUIV(D4;Feuil2!C$2:C$835;0))
Pour la suite recopier E4 de E5 jusqu'où il faut.

Un exemple :
http://cjoint.com/?ejl2YtfAKN

@+
FxM




Bonjour,
Je m'énerve sur un truc tout simple pour un plus doué....
dans une feuille 2 : j'ai 834 communes en col 3 et leur code insee en col 2
dans une feuille 1 j'ai seulement la commune(2557 enregistrements) en col 4,
et je veux compléter la col 5 avec son code insee

j'ai fait ça (avce l'aide de l'aide excel car je suis complètement novice)
mais ça ne marche pas du tout....

For k = 1 To 834
Set this = Worksheets("Sheet2").Cells(k, 3)

For j = 1 To 2557
Set last = Worksheets("Sheet1").Cells(j, 4)
If this = last Then Cells(j, 5).Value = Cells(k, 2)

Next
Next

Est ce que quelqu'un pourrait me dire où se situe l'erreur...et me rectifier
ça.

Merci

GuY

NB : j'ai cherché dans des précédentes demandes de dépannage, mais le peu
que j'ai trouvé m'a plus embrouillé que dépanné :(





Avatar
quidam
"FxM" a écrit dans le message de news:

Bonjour,

Sans VBA et en supposant tes plages comme étant :
dans une feuille 2 :
les 834 communes de C2 à C835

les 834 codes insee de B2 à B835

dans une feuille 1
le premier enregistrement en D4, les suivants recopiés vers le bas


Pour le premier code insee en E4 :
=INDEX(Feuil2!B$2:B$835;EQUIV(D4;Feuil2!C$2:C$835;0))
Pour la suite recopier E4 de E5 jusqu'où il faut.

Un exemple :
http://cjoint.com/?ejl2YtfAKN

@+
FxM

Merci


Mais dés que je mets mes données réelles...........ça plante

je le mets ici aussi : http://cjoint.com/?ejx7EkwQMd

GUY


Avatar
Xavier POWAGA
J'ai vérifié, ça marche dans ton tableau. le seul pb c'est que les noms de
villes qui sont dans ta feuil2 comportent plein d'espaces à la suite et sont
donc vus différents des noms de villes de la feuil 1

Xavier


"quidam" a écrit dans le message de news:
44398455$0$30087$

"FxM" a écrit dans le message de news:

Bonjour,

Sans VBA et en supposant tes plages comme étant :
dans une feuille 2 :
les 834 communes de C2 à C835

les 834 codes insee de B2 à B835

dans une feuille 1
le premier enregistrement en D4, les suivants recopiés vers le bas


Pour le premier code insee en E4 :
=INDEX(Feuil2!B$2:B$835;EQUIV(D4;Feuil2!C$2:C$835;0))
Pour la suite recopier E4 de E5 jusqu'où il faut.

Un exemple :
http://cjoint.com/?ejl2YtfAKN

@+
FxM

Merci


Mais dés que je mets mes données réelles...........ça plante

je le mets ici aussi : http://cjoint.com/?ejx7EkwQMd

GUY





Avatar
quidam
"Xavier POWAGA" a écrit dans le message de news:
4439fabb$0$27975$
J'ai vérifié, ça marche dans ton tableau. le seul pb c'est que les noms de
villes qui sont dans ta feuil2 comportent plein d'espaces à la suite et
sont donc vus différents des noms de villes de la feuil 1

Xavier


Merci


J'ai fait le grand nettoyage des espaces (avec Word car avec Excel je n'ai
pas su faire)....bref il n'y en a plus et c'est propre.
Ca marche....mais juste sur la première occurence !
Je me prend par la main et je saisis les données !
Merci de ton aide

Guy

Avatar
FxM
Bonsoir,

Comme te l'a écrit Xavier, c'est du aux espaces en trop dans les codes
insee ou les communes.

Un code (parmi d'autres) pour les enlever :
Alt-F11 -> Insertion -> module puis recopier ce qui suit :
Sub epure()
Application.EnableEvents = False
With Sheets("feuil1")
.Activate
For Each cel In .Range("D4:D2560")
cel.Select
cel.Value = LTrim(RTrim(cel))
Next cel
End With

With Sheets("feuil2")
.Activate
For Each cel In .Range("B2:C835")
cel.Select
cel.Value = LTrim(RTrim(cel.Value))
Next cel
End With

Application.EnableEvents = True
End Sub
Ensuite retourner dans Excel, outil | macro | macro -> epure

@+
FxM


"FxM" a écrit dans le message de news:

Bonjour,

Sans VBA et en supposant tes plages comme étant :
dans une feuille 2 :
les 834 communes de C2 à C835

les 834 codes insee de B2 à B835

dans une feuille 1
le premier enregistrement en D4, les suivants recopiés vers le bas


Pour le premier code insee en E4 :
=INDEX(Feuil2!B$2:B$835;EQUIV(D4;Feuil2!C$2:C$835;0))
Pour la suite recopier E4 de E5 jusqu'où il faut.

Un exemple :
http://cjoint.com/?ejl2YtfAKN

@+
FxM

Merci


Mais dés que je mets mes données réelles...........ça plante

je le mets ici aussi : http://cjoint.com/?ejx7EkwQMd

GUY






Avatar
quidam
Bonsoir,

Chapeau et mille mercis à vous deux....
Ca fonctionne impec !
Je pensais avoir oté les espaces en trop avec Word, mais ça ne devait pas
être le cas..
et là, en à peine 30sec le pb a été résolu :o)

Guy

"FxM" a écrit dans le message de news:

Bonsoir,

Comme te l'a écrit Xavier, c'est du aux espaces en trop dans les codes
insee ou les communes.

Un code (parmi d'autres) pour les enlever :
Alt-F11 -> Insertion -> module puis recopier ce qui suit :
Sub epure()
Application.EnableEvents = False
With Sheets("feuil1")
.Activate
For Each cel In .Range("D4:D2560")
cel.Select
cel.Value = LTrim(RTrim(cel))
Next cel
End With

With Sheets("feuil2")
.Activate
For Each cel In .Range("B2:C835")
cel.Select
cel.Value = LTrim(RTrim(cel.Value))
Next cel
End With

Application.EnableEvents = True
End Sub
Ensuite retourner dans Excel, outil | macro | macro -> epure

@+
FxM