[EXCEL] Transfert de données entre 2 tableaux - Page 2

Précédent
  • 1
  • 2
  1. guy2mars
     
    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
    @+
    0
  2. Viouu Messages postés 11 Statut Membre
     
    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
    0
  3. Viouu Messages postés 11 Statut Membre
     
    ce passe rien quand j'execute ton code

    Cdlt

    Viouu
    0
  4. Viouu Messages postés 11 Statut Membre
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Viouu Messages postés 11 Statut Membre
     
    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
    0
Précédent
  • 1
  • 2