Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Merci bcp pour ta réponse très compléte! Je me met dès maintenant au travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Merci bcp pour ta réponse très compléte! Je me met dès maintenant au travail!
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Merci bcp pour ta réponse très compléte! Je me met dès maintenant au travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle sourcesheet.
de la même manière on va supposer que ton fichier destination où tu mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage des
constantes et des résultats de formules ( c'est le résultat du Union) dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou des
cellules répondant aux valeurs de plage du Union ( attention, la recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre fichier
(destination), ce qui me permettra ensuite de faire une mise à jours des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
AurélieMerci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
Aurélie
Merci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
AurélieMerci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Bonjour Aurélie,
Lignesource = c.Row
ChrisV
"aurelie" a écrit dans le message de
news:j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
AurélieMerci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Bonjour Aurélie,
Lignesource = c.Row
ChrisV
"aurelie" <aurelie@discussions.microsoft.com> a écrit dans le message de
news: 0AF943A6-EB3F-4F03-A1A3-C10FCACCF9F4@microsoft.com...
j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
Aurélie
Merci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!
bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+
Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie
Bonjour Aurélie,
Lignesource = c.Row
ChrisV
"aurelie" a écrit dans le message de
news:j'ai encore un petit probléme. Je dois récupérer la ligne de la cellule
selectionner dans le fichier source afin de pouvoir effectuer ma mise à
jour,
voici mon code:
For Each c In plage
With rngdest
Set cellule = .Find(What:=c.Value, lookat:=xlWhole)
If Not cellule Is Nothing Then
Lignedest = cellule.Rows
Lignesource = c.Rows
For i = 4 To 8
If wshsource.Cells(Lignesource, i).Value <>
wshdest.Cells(Lignedest, i).Value Then
wshdest.Activate
wshdest.Cells(Lignedest, i).Select
Selection.Interior.ColorIndex = 6
wshdest.Cells(Lignedest, colonneModifs).Select
ActiveCell.FormulaR1C1 = "X"
End If
Next i
Else .....etc...
Le programme bloque à la ligne Lignesource = c.Rows, il me dit
"incompatibilité de type". Peut être s'agit il juste d'un probléme de
syntaxe, en tout cas je bloque!
Merci de m'aider (encore!) si vous pouvez!
AurélieMerci bcp pour ta réponse très compléte! Je me met dès maintenant au
travail!bonjour,
on va supposer que ton fichier source où se trouve les données de base
s'appelle source.xls et la feuille où sont les données s'appelle
sourcesheet.
de la même manière on va supposer que ton fichier destination où tu
mets à
jour les données s'appelle dest.xls et la feuille où sont les données à
rechercher s'appelle destsheet.
on suppose evidemment que les 2 fichies sont ouverts et que la feuille
destsheet n'est pas protégée.
Dim wshsource As Worksheet
Dim wshdest as worksheet
Dim plage as range, plage1 as range, plage2 as range, rngdest as range
Dim rngfind as range
Set wshsource = workbooks("source.xls").Sheets("sourcesheet")
Set wshdest = workbooks("dest.xls").Sheets("destsheet")
Set plage1 = wshsource.Cells.SpecialCells(xlCellTypeConstants)
Set plage2 = wshsource.Cells.SpecialCells(xlCellTypeFormulas)
Set plage = Union(plage1, plage2)
set rngdest= wshdest.cells
For Each c In plage
With rngdest
Set rngfind = .Find(What:= c.value, lookat:=xlwhole)
If Not rngfind Is Nothing Then
firstaddress = rngfind.Address
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Do While rngfind.Address <> firstaddress And Not rngfind
Is
Nothing
rngfind.offset(0,1).value="tutu"
Set rngfind= .FindNext(rngfind)
Loop
End If
End With
Next
Ce que fait cette proc, c'est qu'elle constitue tout d'abord une plage
des
constantes et des résultats de formules ( c'est le résultat du Union)
dans la
feuille sourcesheet du fichier sourec.xls.
Puis ensuite , à partir des cellules contenues dans le Union, elle
controle
si dans le fichier dest.xls à la feuille destsheet, il existe une ou
des
cellules répondant aux valeurs de plage du Union ( attention, la
recherche
ici s'execute sur la valeur complète , d'où le lookat:=xlwhole ).
Si elle trouve une ou des cellules correspondantes, elle écrit sur la
même
ligne et avec une colonne de décalage vers la droite (
rngfind.offset(0,1).value) une valeur qui est ici "tutu" dans la
feuille
destsheet du fichier dest.xls.
Voilà, tu peux adapter cette proc à ton besoin. Elle fonctionne sans
difficulté aucune sous les conditions préalablement citées.
A+Bonjour à tous,
Dans une colonne(D) d'un fichier (source),j'ai des nombres (toujours
différents) et des cellules vides.
Je voudrais trouver les cellules non vides, récupérer la valeur et
l'adresse
de la cellule trouvée, puis chercher la valeur trouvée dans un autre
fichier
(destination), ce qui me permettra ensuite de faire une mise à jours
des
cellules voisines.
Puis passer à la cellule non vide suivante dans le fichier source et
ainsi
de suite...
J'aimerai savoir si le critére de sélection de la méthode Find peut
être
"une négation", soit un truc du genre Find(What:=<>"")
Est ce que je peux imbriqué plusieurs boucles Find dans une
procédure? (En
effet, ici je dois trouver les cellules non vides, et ensuite trouver
la
valeur de la cellule correspondante dans le fichier destination)
Merci d'avance pour votre aide et vos conseils,
Cordialement,
Aurélie