Copier coller précis

Résolu
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008 - 18 janv. 2008 à 10:07
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008 - 18 janv. 2008 à 17:57
Bonjour a tous. J'ai une feuille de materiel qui s'incrémente par click dans une listbox. Chaque ligne ajoutée a 8 colonnes d'info sur le matériel(Prix, fab, etc). Je veux qu'à chaque ajout les infos soient copiées dans une autre feuille à des lignes précises et des colonnes différentes en fonction de la valeur texte de ma colonne "I".

Ex : If valeur de feuil1.Range ("I" & u)= toto then
'copier toutes les lignes avec toto et les coller dans feuil4 a partir de la ligne 42 à la ligne 51(si ligne vide,sinon aller à la suivante) avec la valeur feuil1 colonne "B" dans feuil4 colonne "H" par exemple.

Else if valeur de feuil1.Range ("I" & u)= lulu then
'copier toutes les lignes avec lulu et les coller dans feuil4 a partir de la ligne 2 à la ligne 16(si ligne vide,sinon aller à la suivante)

Etc....

Voila, trois jours que je me creuse les méninges dessus et que je bloque total...
Si quelqu'un peut m'aider, en esperant avoir été précis dans l'énoncé du problème(long, désolé!).Merci d'avance

7 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 janv. 2008 à 15:41
Tu écris ceci
           If Worksheets("feuil4").Range("H" & i).Value = "" Then

            Worksheets("feuil4").Range("H" & i).PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,
Transpose:=False

           Else: If Worksheets("feuil4").Range("H" & i).Value
<> "" Then Worksheets("feuil4").Range("H" & i).PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,
Transpose:=False

Donc, tu colles peu importe si H&i est vide ou non... Je pense que ce n'est pas vraiment ce que tu cherches à faire... Enlève la partie Else: ... en bleu

Nota: 
Une boucle For...Next fait la même chose qu'un Do...Loop ou un While...Wend.
Seule la syntaxe est différente.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008
18 janv. 2008 à 11:40
Par contre j'ai peut-etre posté au mauvais endroit. J'utilise Excel/VBA. Désolé si c'est le cas:)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 janv. 2008 à 15:12
Si tu utilisais l'enregistreur de macro d'Excel, ça te donnerait un code dont tu pourrais t'inspirer...

Comme il semble y avoir plusieurs valeurs "toto" possibles à copier, tu pourrais utiliser les filtres et sélectionner la plage résultante pour la copie.

Pour trouver une ligne vide, fais une boucle, du genre
For i = 2 to 16
    If Sheets("feuil4").Range("A" & i) = "" then
       'elle est vide et tu peux coller là, à partir de Sheets("feuil4").Range("A" & i)
       Exit For  'pour sortir de la boucle une fois collé
    End If
Next

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008
18 janv. 2008 à 15:28
J'ai deja essayé le probleme est que j'ai plusieurs valeurs a copier et avec for next ca copie toujours la meme valeur.
voila le code adapté à l'exemple.
Au niveau de mes boucles doloop ...i problème car i est mal utilisé: loop until i=52!
Le probleme est que je n'arrive pas à exprimer la boucle pour avoir une copie par ajout par ligne.

Dim f As Integer
Dim wiwi As String
Dim u As Long
Dim i As Integer

u = 1

Do
u = u + 1
wiwi = Worksheets("feuil1").Range("I" & u).Value

If wiwi = "toto" Then
Worksheets("feuil1").Range("B" & u & ":C" & u & ":D" & u & ":E" & u).Copy
Worksheets("feuil4").Activate

Do
i = 42
i = i + 1


If Worksheets("feuil4").Range("H" & i).Value = "" Then
Worksheets("feuil4").Range("H" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Else: If Worksheets("feuil4").Range("H" & i).Value <> "" Then Worksheets("feuil4").Range("H" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End If
Loop Until i = 51 -------------!!!!

ElseIf wiwi = "lulu" Then
Worksheets("feuil1").Range("B" & u & ":C" & u & ":D" & u & ":E" & u).Copy
Worksheets("feuil4").Activate

Do
i = 2
i = i + 1


If Worksheets("feuil4").Range("H" & i).Value = "" Then
Worksheets("feuil4").Range("H" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Else: If Worksheets("feuil4").Range("H" & i).Value <> "" Then Worksheets("feuil4").Range("H" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End If
Loop Until i = 16 --------------!!!

End If

Loop Until Worksheets("feuil1").Range("I" & u).Value "" And Worksheets("feuil1").Range("I" & u + 1).Value ""
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008
18 janv. 2008 à 15:59
Désolé je me suis mal exprimé. Que j'utilise une boucle for..Next ou do...loop ou bien meme des offsets j'ai le probleme d'avoir toujours la copie de la meme ligne de la feuil1.

Je voudrais que ma boucle fasse: if Worksheets("feuil4").Range("H" & i).Value = "" then
'copie la première ligne "toto" de feuil1
puis à la ligne suivante copier la deuxieme ligne "toto" si il en existe une etc...
Ca viens de ma syntaxe mais j'ai tellement essayé que la solution est devenue totalement invisible à mes yeux.

et j'avais déja éffacé la partie bleu(erreur d'inadvertance quand j'ai collé)
Aurais tu une idée pour me sortir du brouillard? Miki d'avance
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 janv. 2008 à 17:04
Avant d'aller plus loin, tu dis que la section 1 a 15 lignes (2 à 16) et la section 2 a 10 lignes (42 à 51). Ça reste fixe ? Il ne peut pas arriver qu'il y ait plus de lignes à copier que de lignes disponibles ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
towney Messages postés 26 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 29 janvier 2008
18 janv. 2008 à 17:57
Effectivement il n'y a qu'un nombre déterminé de lignes disponibles, dans des feuilles existantes ou les données doivent etre rentrées à des endroits précis.

el perdido...
0
Rejoignez-nous