Problème code VBA
totodor
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
totodor Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
totodor Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour le forum,
Je n'arrive pas à créer un code VBA. En effet, j'aurais besoin de copier un certain nombre de cellules d'une ligne dans une autre feuille si une cellule de cette ligne contient un nom. Je m'explique : par exemple copier B3, C3, D3 et H3 si AX3 contient "validé" et les coller dans une autre feuille et ainsi de suite si pour toute la feuille initiale.
J'ai pas mal cherché dans le forum mais j'ai trouvé uniquement des copies de la ligne entière, alors que moi je n'ai pas besoin.
Merci par avance.
Bonne semaine
Je n'arrive pas à créer un code VBA. En effet, j'aurais besoin de copier un certain nombre de cellules d'une ligne dans une autre feuille si une cellule de cette ligne contient un nom. Je m'explique : par exemple copier B3, C3, D3 et H3 si AX3 contient "validé" et les coller dans une autre feuille et ainsi de suite si pour toute la feuille initiale.
J'ai pas mal cherché dans le forum mais j'ai trouvé uniquement des copies de la ligne entière, alors que moi je n'ai pas besoin.
Merci par avance.
Bonne semaine
A voir également:
- Problème code VBA
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
5 réponses
Sub Copie() Dim Ligne As Long 'Boucle de la ligne 1 à la ligne 10 (changer 10 si jamais...) For Ligne = 1 To 10 'Changer le nom Feuil1 avec le nom de la feuille contenant les données à copier If Sheets("Feuil1").Range("AX" & Ligne).Value = "validé" Then 'Changer le nom Feuil2 avec le nom de la feuille où copier les données With Sheets("Feuil2") 'SI feuil1(AX1) = "validé", copie Feuil1(B1:C1) sur Feuil2(B1:C1) 'idem avec AX2, AX3... .Range("B" & Ligne) = Sheets("Feuil1").Range("B" & Ligne) .Range("C" & Ligne) = Sheets("Feuil1").Range("C" & Ligne) .Range("D" & Ligne) = Sheets("Feuil1").Range("D" & Ligne) End With End If Next Ligne End Sub
Merci bcp Normad,
Ca marche très bien sauf que je me retrouve avec plein de lignes et de colonnes vides. En effet, les cellules copiées conservent leurs emplacement initial dans la nouvelle feuille. Est-ce qu'il y aurait un moyen de les coller dans des lignes et des colonnes qui s'achèvent ou de rajouter un code VBA qui va supprimer les lignes et les colonnes vides?
Merci encore.
Ca marche très bien sauf que je me retrouve avec plein de lignes et de colonnes vides. En effet, les cellules copiées conservent leurs emplacement initial dans la nouvelle feuille. Est-ce qu'il y aurait un moyen de les coller dans des lignes et des colonnes qui s'achèvent ou de rajouter un code VBA qui va supprimer les lignes et les colonnes vides?
Merci encore.
Du coup, j'ai en tout 7 celluces à copier ( B, C, H, I, J, V et X), est-ce que je peux les copier dans les colonnes de B à H dans la nouvelle feuille?
Désolé, mais c'est souvent le problème quand une question n'est pas suffisamment précise et sans fichier exemple: Ma réponse correspondait à ma compréhension de la question initiale....
L'idée n'est pas te faire tout ton code avec des questions qui viendrons encore peut-être ensuite, mais de te donner la base.
Pour la ligne où copier, utilises une deuxième variable Ligne2 que tu indexes quand elle est utilisée uniquement, ça donnera ensuite ça pour la reprise des données :
.Range("B" & Ligne2) = Sheets("Feuil1").Range("B" & Ligne)
Pour reprendre d'autres cellules, ajoutes les lignes comme celle ci-dessus correspondantes et si tu ne veux pas mettre dans la même colonne, change la lettre de la 1ère partie
L'idée n'est pas te faire tout ton code avec des questions qui viendrons encore peut-être ensuite, mais de te donner la base.
Pour la ligne où copier, utilises une deuxième variable Ligne2 que tu indexes quand elle est utilisée uniquement, ça donnera ensuite ça pour la reprise des données :
.Range("B" & Ligne2) = Sheets("Feuil1").Range("B" & Ligne)
Pour reprendre d'autres cellules, ajoutes les lignes comme celle ci-dessus correspondantes et si tu ne veux pas mettre dans la même colonne, change la lettre de la 1ère partie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question