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

Recopie de cellules

6 réponses
Avatar
Michel
Bonjour à tout le monde,

Voilà, j'explique mon problème :

Je veux mettre au point une macro qui me recopie certaines cellules d'un
classeur dans un autre classeur.

Dans le classeur de départ la 1ère cellule à recopier se trouve toujours au
même endroit G12. Dans ce même classeur en A1 j'ai une valeur qui correspond
à une partie de ma cellule se trouvant en A5 du classeur récepteur des
données.

Alors voilà, je voudrais recopier la valeur de G12 (dans mon classeur
source) dans B5 (dans mon classeur récepteur) à condition que la valeur de
A1 (du classeur source) se trouve dans la chaine de caractère de A5 (de mon
classeur récepteur). Et si c'est le cas alors je colle en B5 la valeur de
G12 du classeur source.
Et ainsi de suite : on part donc de la ligne 5 pour aller jusqu'à la ligne
36 dans le classeur récepteur des données (le nombre de lignes ne change
pas), sachant que dans le classeur source le nombre de lignes peut varier,
mais on démarre tout le temps en G12.

Est ce assez clair ?

Merci à toutes et tous pour votre aide

Michel

6 réponses

Avatar
francois.forcet
Salut Michel

Les conditions de recopie de la premières données

G12 en B5 si A1 dans A5

que deviennent elles pour les suivantes

G13 en B6 si A2 dans A6 ????

Si le classeurs source a plus de lignes que les 36 du classeur de
réception quid de l'éxédent ????
Le surplus de ligne ne doit pas être recopié ????

Merci pour les précisions
Avatar
Michel
Je suis désolé je me suis trompé :
C'est G12 en B5 si A12 dans A5
et pour les suivantes G13 en B6 si A13 dans A6
et G14 en B7 si A14 dans A7 etc ... jusqu'à la fin du fichier source.
Donc on peut arrêter la recopie en G20 ou G26 mais sans jamais dépasser G48
puisque,
le classeur source ne peut pas avoir plus de ligne que le classeur de
destination

Merci François de te soucier de mon problème

Michel

a écrit dans le message de
news:
Salut Michel

Les conditions de recopie de la premières données

G12 en B5 si A1 dans A5

que deviennent elles pour les suivantes

G13 en B6 si A2 dans A6 ????

Si le classeurs source a plus de lignes que les 36 du classeur de
réception quid de l'éxédent ????
Le surplus de ligne ne doit pas être recopié ????

Merci pour les précisions
Avatar
francois.forcet
Rebonjours Michel
Soit le Classeur1 Feuil1 la source, Classeur2 Feuil2 la destination
Je te propose ce code :

For i = 0 To 35
If Workbooks("Classeur2").Sheets("Feuil1").Range("A" & 5 + i) Like "*"
& Workbooks("Classeur1").Sheets("Feuil1").Range("A" & 12 + i) & "*"
Then
Workbooks("Classeur2").Sheets("Feuil1").Range("B" & 5 + i).Value =
Workbooks("Classeur1").Sheets("Feuil1").Range("G" & 12 + i).Value
End If
Next

Mets les groupes de 2 lignes :

If Workbooks("Classeur2").Sheets("Feuil1").Range("A" & 5 + i) Like "*"
& Workbooks("Classeur1").Sheets("Feuil1").Range("A" & 12 + i) & "*"
Then (de If Workbooks à Then en une seule et même ligne)

Workbooks("Classeur2").Sheets("Feuil1").Range("B" & 5 + i).Value =
Workbooks("Classeur1").Sheets("Feuil1").Range("G" & 12 + i).Value (de
Workbooks à Value en une seule et même ligne)

En une seule ligne chacun

Si je traite 36 lignes (For i = 0 to 35) de G12 je traite jusqu'à G47
maxi

Celà devrait te convenir

Dis moi !!!!
Avatar
Michel
çà fonctionne en partie :

je m'explique
Dans le classeur source j'ai 14 valeurs à copier qui proviennent donc de 14
lignes différentes.
Dans le classeur de destination il ne que les 6 1ères valeurs qui se
recopient ??? Pourquoi ????

Précisions = les 6 1ères se suivent lignes après lignes dans le classeur
destination, quant à la 7ème (sur le classeur destination elle se trouve
plus bas, elle ne se trouve pas toute de suite en dessous des 6 1ère),
ensuite la 8ème à recopier se trouve 4 lignes en dessous de la 7ème). Ce qui
veut que les cellules figurant dans la colonne B ne sont pas forcèment
remplies.

Donc sur la source, quand on commence à la ligne 12, normalement il n'y pas
de lignes sans valeur.

Je me demande si dans le code il ne faut pas partir du classeur source,
sachant que les chaines de caractères figurant dans les colonnes A du
classeur destination sont ou égal ou supérieur, aux valeurs figurant dans
les colonnes A du classeur source.

Michel

a écrit dans le message de
news:
Rebonjours Michel
Soit le Classeur1 Feuil1 la source, Classeur2 Feuil2 la destination
Je te propose ce code :

For i = 0 To 35
If Workbooks("Classeur2").Sheets("Feuil1").Range("A" & 5 + i) Like "*"
& Workbooks("Classeur1").Sheets("Feuil1").Range("A" & 12 + i) & "*"
Then
Workbooks("Classeur2").Sheets("Feuil1").Range("B" & 5 + i).Value Workbooks("Classeur1").Sheets("Feuil1").Range("G" & 12 + i).Value
End If
Next

Mets les groupes de 2 lignes :

If Workbooks("Classeur2").Sheets("Feuil1").Range("A" & 5 + i) Like "*"
& Workbooks("Classeur1").Sheets("Feuil1").Range("A" & 12 + i) & "*"
Then (de If Workbooks à Then en une seule et même ligne)

Workbooks("Classeur2").Sheets("Feuil1").Range("B" & 5 + i).Value Workbooks("Classeur1").Sheets("Feuil1").Range("G" & 12 + i).Value (de
Workbooks à Value en une seule et même ligne)

En une seule ligne chacun

Si je traite 36 lignes (For i = 0 to 35) de G12 je traite jusqu'à G47
maxi

Celà devrait te convenir

Dis moi !!!!
Avatar
francois.forcet
Tu m'as donné comme conditions :

"C'est G12 en B5 si A12 dans A5
et pour les suivantes G13 en B6 si A13 dans A6
et G14 en B7 si A14 dans A7 etc ... jusqu'à la fin du fichier source.
"

Il ne peux dans cette perspective avoir de décalage
J'ai bien
G12 en B5
G13 en B6
G14 en B7
etc....
G17 en B10
G18 en B11
Etc..

N'est pas celà qu'il fallait comprendre ????

Peux tu m'envoyer ton document par le biais de ce site :

http://www.cijoint.fr/index.php

Communiques moi le lien pour que je le récupère

Merci d'avance
Avatar
francois.forcet
Si tu ne peux pas me transmettre ton document peux tu me faire une
liste des valeurs à comparer (un exemple) qui conditionne la recopie
Là peut être serait la difficulté
Merci