[EXCEL] Transfert de données entre 2 tableaux
Fermé
ANTOHCDTony
-
12 déc. 2007 à 08:34
Viouu Messages postés 11 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 13 décembre 2007 - 13 déc. 2007 à 14:13
Viouu Messages postés 11 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 13 décembre 2007 - 13 déc. 2007 à 14:13
A voir également:
- Transfert données entre deux fichiers excel
- Liste déroulante excel - Guide
- Fusionner deux fichiers excel - Guide
- Si et excel - Guide
- We transfert - Guide
- Concatener deux cellules excel - Guide
25 réponses
erreur de copier coller
le veritable syntaxe est la dessous
Sub COMPAR()
'
Dim VALEURA As String, i As Integer, x As Integer, valeurB As String
i = 1
VALEURA = Range("A" & i).Value
Do While VALEURA <> ""
VALEURA = Range("A" & i).Value
If valeurB <> "" Then
Sheets("Feuil2").Select
x = 1
valeurB = Range("A" & x).Value
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
'la tu notes que le x est constant. Tu peux donc explorer la valeur de la cellule Fx
If Range("F" & x).Value <> "" Then
Range("o" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("g" & i).Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Range("p" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("h" & i).Select
ActiveSheet.Paste
End If
End If
i = i + 1
Loop
End Sub
voila: l idee est
tu lis la cellule A1 tu cherche fdans A Feuil2 la 1ere correspondance.
tu en trouves 1, tu testes F vide si non vide tu copies, puis tu boucle pour trouver la 2eme occurence etc....
quand tu arrives en fin de liste col A feuil2, tu retournes en feuil1 et tu passes en A2 etccc
@+
le veritable syntaxe est la dessous
Sub COMPAR()
'
Dim VALEURA As String, i As Integer, x As Integer, valeurB As String
i = 1
VALEURA = Range("A" & i).Value
Do While VALEURA <> ""
VALEURA = Range("A" & i).Value
If valeurB <> "" Then
Sheets("Feuil2").Select
x = 1
valeurB = Range("A" & x).Value
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
'la tu notes que le x est constant. Tu peux donc explorer la valeur de la cellule Fx
If Range("F" & x).Value <> "" Then
Range("o" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("g" & i).Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Range("p" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("h" & i).Select
ActiveSheet.Paste
End If
End If
i = i + 1
Loop
End Sub
voila: l idee est
tu lis la cellule A1 tu cherche fdans A Feuil2 la 1ere correspondance.
tu en trouves 1, tu testes F vide si non vide tu copies, puis tu boucle pour trouver la 2eme occurence etc....
quand tu arrives en fin de liste col A feuil2, tu retournes en feuil1 et tu passes en A2 etccc
@+
Viouu
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
12 déc. 2007 à 23:09
12 déc. 2007 à 23:09
Merci j'etait parti la dessus
Sub COMPAR()
'declaration des variables'
Dim VALEURA As String, i As Integer, x As Integer, valeurB As String
'i correspondra au numeros de ligne dans la feuille 1'
i = 2
'continuer tant que i n'est pas egal à 4900'
Do While i <> "4900"
'donner une valeur de départ à VALEURA, valeura=le contenue de A2'
VALEURA = Range("A" & i).Value
'activer la feuille 2'
Sheets("Feuil2").Select
'x correspond au numeros de ligne dans la feuille 2'
x = 2
'donner une valeur de depart a valeurb'
valeurB = Range("A" & x).Value
'comparer valeura et valeurb, tant que faux incrementer x de 1'
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
'si la cellule Lx = quelque chose alors on copy la ligne'
If Range("L" & x).Value <> "" Then
Range("L" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("J" & i).Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Range("O" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("M" & i).Select
ActiveSheet.Paste
End If
'on incremente i de 1'
i = i + 1
'on continue les fonction d'avant jusqu'a ce que i=4900'
Loop
End Sub
Viouu
Sub COMPAR()
'declaration des variables'
Dim VALEURA As String, i As Integer, x As Integer, valeurB As String
'i correspondra au numeros de ligne dans la feuille 1'
i = 2
'continuer tant que i n'est pas egal à 4900'
Do While i <> "4900"
'donner une valeur de départ à VALEURA, valeura=le contenue de A2'
VALEURA = Range("A" & i).Value
'activer la feuille 2'
Sheets("Feuil2").Select
'x correspond au numeros de ligne dans la feuille 2'
x = 2
'donner une valeur de depart a valeurb'
valeurB = Range("A" & x).Value
'comparer valeura et valeurb, tant que faux incrementer x de 1'
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
'si la cellule Lx = quelque chose alors on copy la ligne'
If Range("L" & x).Value <> "" Then
Range("L" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("J" & i).Select
ActiveSheet.Paste
Sheets("Feuil2").Select
Range("O" & x).Select
Selection.Copy
Sheets("Feuil1").Select
Range("M" & i).Select
ActiveSheet.Paste
End If
'on incremente i de 1'
i = i + 1
'on continue les fonction d'avant jusqu'a ce que i=4900'
Loop
End Sub
Viouu
Viouu
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
12 déc. 2007 à 23:18
12 déc. 2007 à 23:18
ce passe rien quand j'execute ton code
Cdlt
Viouu
Cdlt
Viouu
Viouu
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
13 déc. 2007 à 00:58
13 déc. 2007 à 00:58
Bon j'ai trouver le souci en faite il se peut que A feuilA ne trouve pas de correspondace dans Afeuil2
La feuil1 possede 5000 lignes et la feuil2 aussi
Comment faire pour que lors de la boucle suivante qu'il arrete la comparaison a X=5000 et que si il ne trouve pas de comparaison valeur A et valeur B il passe a i=i+1
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
Viouu
La feuil1 possede 5000 lignes et la feuil2 aussi
Comment faire pour que lors de la boucle suivante qu'il arrete la comparaison a X=5000 et que si il ne trouve pas de comparaison valeur A et valeur B il passe a i=i+1
Do While VALEURA <> valeurB
x = x + 1
valeurB = Range("A" & x).Value
Loop
Viouu
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Viouu
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
13 décembre 2007
13 déc. 2007 à 14:13
13 déc. 2007 à 14:13
Voila le code final si peut aider du monde
Sub COMPAR()
'declaration des variables'
Dim VALEURA As String, valeurB As String ' string pour chaine de charactére different'
Dim i As Integer, x As Integer, ' Integer pour dire que i et x sont des entier'
'i correspondra au numeros de ligne de depart dans la feuille 1'
i = 2
'continuer tant que i n'est pas egal à 5000 car j'ai 500 pour eviter de boucler à l'infini'
Do While i <> "5003"
'donner une valeur de départ à VALEURA, valeura=le contenue de A2'
VALEURA = Range("A" & i).Value
'activer la feuille 2'
Sheets("Feuil2").Select
'x correspond au numeros de ligne dans la feuille 2'
x = 2
'donner une valeur de depart a valeurb'
valeurB = Range("A" & x).Value
'comparer valeura et valeurb, tant que faux incrementer x de 1'
Do While VALEURA <> valeurB
x = x + 1
'si X=5000 passer la boucle'
If x = 5003 Then GoTo l49
valeurB = Range("A" & x).Value
Loop
'si la cellule Lx = quelque chose alors on copy la ligne'
If Worksheets("Feuil2").Range("L" & x).Value <> "" Then
Worksheets("Feuil1").Range("J" & i).Value = Worksheets("Feuil2").Range("L" & x)
End If
'on incremente i de 1'
l49: ' etiquette pour le goto
i = i + 1
'on continue les fonction d'avant jusqu'a ce que i=5000'
Loop
End Sub
Merci à tous pour votre aide
Sub COMPAR()
'declaration des variables'
Dim VALEURA As String, valeurB As String ' string pour chaine de charactére different'
Dim i As Integer, x As Integer, ' Integer pour dire que i et x sont des entier'
'i correspondra au numeros de ligne de depart dans la feuille 1'
i = 2
'continuer tant que i n'est pas egal à 5000 car j'ai 500 pour eviter de boucler à l'infini'
Do While i <> "5003"
'donner une valeur de départ à VALEURA, valeura=le contenue de A2'
VALEURA = Range("A" & i).Value
'activer la feuille 2'
Sheets("Feuil2").Select
'x correspond au numeros de ligne dans la feuille 2'
x = 2
'donner une valeur de depart a valeurb'
valeurB = Range("A" & x).Value
'comparer valeura et valeurb, tant que faux incrementer x de 1'
Do While VALEURA <> valeurB
x = x + 1
'si X=5000 passer la boucle'
If x = 5003 Then GoTo l49
valeurB = Range("A" & x).Value
Loop
'si la cellule Lx = quelque chose alors on copy la ligne'
If Worksheets("Feuil2").Range("L" & x).Value <> "" Then
Worksheets("Feuil1").Range("J" & i).Value = Worksheets("Feuil2").Range("L" & x)
End If
'on incremente i de 1'
l49: ' etiquette pour le goto
i = i + 1
'on continue les fonction d'avant jusqu'a ce que i=5000'
Loop
End Sub
Merci à tous pour votre aide