Plusieur Sub VBA
Résolu/Fermé
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
-
24 août 2011 à 09:09
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 24 août 2011 à 12:31
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 24 août 2011 à 12:31
A voir également:
- Plusieur Sub VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
18 réponses
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 09:20
24 août 2011 à 09:20
Salut...
Tu peux expliquer exactement ce que tu veux faire ?
Tu as une colonne B avec des valeurs... Et tu veux les recopier ailleurs si la cellule n est pas vide ? sur une range donnee ?
Tu peux expliquer exactement ce que tu veux faire ?
Tu as une colonne B avec des valeurs... Et tu veux les recopier ailleurs si la cellule n est pas vide ? sur une range donnee ?
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 09:57
24 août 2011 à 09:57
j'ai des données en :S1:S208,
R1:R208
et T1:T208
que je veut copier en bas de page en :
colonne A
Colonne B
et colonne G
tout en ne tenant pas compte des espaces en S R et T
une sorte de bilan quoi
un résumé de contrôle
R1:R208
et T1:T208
que je veut copier en bas de page en :
colonne A
Colonne B
et colonne G
tout en ne tenant pas compte des espaces en S R et T
une sorte de bilan quoi
un résumé de contrôle
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 09:58
24 août 2011 à 09:58
Des espaces ou des cellulles vides ?
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 09:58
24 août 2011 à 09:58
des cellules vides
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 09:59
24 août 2011 à 09:59
Ok
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 10:14
24 août 2011 à 10:14
Salut...
Ceci devrait aller
___________________________________________________
R = 18
S = R+1
T =S +1
LinetoreportR = 210
LinetoreportS = 210
LinetoreportT = 210
For i = 1 to 208
If Cells(i, R) <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, R).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S) <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, S).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, T).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
__________________________________________________
Tu as juste a change les valeurs de
LinetoreportR
LinetoreportS
LinetoreportT
Sur les lignes 5, 6 et 7 pour qu elles correspondent a l endroit ou tu veux commencer a ecrire ton bilan....
Esperant t avoir aide...
Cordialement
Ceci devrait aller
___________________________________________________
R = 18
S = R+1
T =S +1
LinetoreportR = 210
LinetoreportS = 210
LinetoreportT = 210
For i = 1 to 208
If Cells(i, R) <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, R).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S) <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, S).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, T).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
__________________________________________________
Tu as juste a change les valeurs de
LinetoreportR
LinetoreportS
LinetoreportT
Sur les lignes 5, 6 et 7 pour qu elles correspondent a l endroit ou tu veux commencer a ecrire ton bilan....
Esperant t avoir aide...
Cordialement
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 10:23
24 août 2011 à 10:23
rien ne se passe quand j'exécute ...
Peux tu me décrire à quoi servent les 6 premières lignes ?
à quoi correspond le R=18
Peux tu me décrire à quoi servent les 6 premières lignes ?
à quoi correspond le R=18
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 10:27
24 août 2011 à 10:27
R = 18, c est pour dire que c est la 18e colonne
S la 19e
T la 20e
les 3 lignes d apres, on definit l endroit ou on veut ecrire. A savoir le bilan de la colonne R , j ai mis ligne 210, pareil pour S et T.
T as quelque chose dans tes colonnes R S et T ?
S la 19e
T la 20e
les 3 lignes d apres, on definit l endroit ou on veut ecrire. A savoir le bilan de la colonne R , j ai mis ligne 210, pareil pour S et T.
T as quelque chose dans tes colonnes R S et T ?
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 10:30
24 août 2011 à 10:30
non je n'ai rien dans les 3 colonnes ...
il est possible d'écrire le bilan en A266, B266 et G266 ?
évidemment dans l'ordre des colonnes R S et T
il est possible d'écrire le bilan en A266, B266 et G266 ?
évidemment dans l'ordre des colonnes R S et T
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 10:40
24 août 2011 à 10:40
Ok... C est normal que le script ne fasse rien alors...
Il zappe en fait toutes les cellules vides entre la ligne 1 a 208 dans les colonnes R S et T. Quand tu auras qq chose dans ces colonnes, (essaie des maintenant) le script marchera...
Pour l ecriture du bilan il est tout a fait possible de l ecrire a partir des cellules que tu as enonce... Cela donne...
A = 1
B = 2
C = 3
R = 18
S = R+1
T =S +1
LinetoreportR = 266
LinetoreportS = 266
LinetoreportT = 266
For i = 1 to 208
If Cells(i, R) <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, A).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S) <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, B).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, C).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
__________________________________________________
Dis moi si ca te convient... ;)
Il zappe en fait toutes les cellules vides entre la ligne 1 a 208 dans les colonnes R S et T. Quand tu auras qq chose dans ces colonnes, (essaie des maintenant) le script marchera...
Pour l ecriture du bilan il est tout a fait possible de l ecrire a partir des cellules que tu as enonce... Cela donne...
A = 1
B = 2
C = 3
R = 18
S = R+1
T =S +1
LinetoreportR = 266
LinetoreportS = 266
LinetoreportT = 266
For i = 1 to 208
If Cells(i, R) <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, A).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S) <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, B).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, C).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
__________________________________________________
Dis moi si ca te convient... ;)
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 10:45
24 août 2011 à 10:45
j'ai pourtant un paquet de données dans les colonnes R S et T et rien ne se passe :
une question : il faut mettre un genre de sub avant ton code ?
une question : il faut mettre un genre de sub avant ton code ?
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 10:50
24 août 2011 à 10:50
Regarde...
Enregistre une macro...appelle la "mafonction"
Selectionne une cellule et arrete l enregistrement.
Edite ta macro... Supprime la selection de la cellule et colle entre le sub et end sub ceci :
A = 1
B = 2
C = 3
R = 18
S = R+1
T =S +1
LinetoreportR = 266
LinetoreportS = 266
LinetoreportT = 266
For i = 1 to 208
If Cells(i, R).text <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, A).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S).text <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, B).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>.text"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, C).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
Ensuite enregistre.
Pour l exemple : Met une image dans ton fichier excel. Fais un click droit sur cette image. Affectes lui la macro que tu as cree... Et enfin, click sur l image...
Au pire envoie moi ton fichier excel si vraiment tu y arrives pas
Enregistre une macro...appelle la "mafonction"
Selectionne une cellule et arrete l enregistrement.
Edite ta macro... Supprime la selection de la cellule et colle entre le sub et end sub ceci :
A = 1
B = 2
C = 3
R = 18
S = R+1
T =S +1
LinetoreportR = 266
LinetoreportS = 266
LinetoreportT = 266
For i = 1 to 208
If Cells(i, R).text <>"" Then
Valuetotake = Cells(i, R).text
Cells(LinetoreportR, A).text = Valuetotake
LinetoreportR = LinetoreportR +1
End If
If Cells(i, S).text <>"" Then
Valuetotake = Cells(i, S).text
Cells(LinetoreportS, B).text = Valuetotake
LinetoreportS = LinetoreportS +1
End If
If Cells(i, T) <>.text"" Then
Valuetotake = Cells(i, T).text
Cells(LinetoreportT, C).text = Valuetotake
LinetoreportT = LinetoreportT +1
End If
Next
Ensuite enregistre.
Pour l exemple : Met une image dans ton fichier excel. Fais un click droit sur cette image. Affectes lui la macro que tu as cree... Et enfin, click sur l image...
Au pire envoie moi ton fichier excel si vraiment tu y arrives pas
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 11:01
24 août 2011 à 11:01
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
24 août 2011 à 10:50
24 août 2011 à 10:50
Re,
Essaie :
Sub copie()
Dim celOrg As Range
Dim celDst As Range
Set celDst = Columns("A").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("A1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("R1:R208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
Set celDst = Columns("B").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("B1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("S1:S208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
Set celDst = Columns("G").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("G1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("T1:T208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
End Sub
Essaie :
Sub copie()
Dim celOrg As Range
Dim celDst As Range
Set celDst = Columns("A").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("A1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("R1:R208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
Set celDst = Columns("B").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("B1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("S1:S208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
Set celDst = Columns("G").Find("*", , , , , xlPrevious)
If celDst Is Nothing Then Set celDst = Range("G1") Else Set celDst = celDst.Offset(1)
For Each celOrg In Worksheets("Feuil1").Range("T1:T208")
If celOrg.Value > "" Then
celDst.Value = celOrg.Value
Set celDst = celDst.Offset(1)
End If
Next celOrg
End Sub
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 10:57
24 août 2011 à 10:57
malheureusement, quand j'exécute la macro, rien ne se passe
alors que le premier code que tu m'as donné marche du tonnerre
peut être parce qu'il était seul
alors que le premier code que tu m'as donné marche du tonnerre
peut être parce qu'il était seul
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 11:01
24 août 2011 à 11:01
voici le fichier en question ne tenez pas compte des blancs, j'ai effacé le contenu ce qui est imprtant c le haut et le bilan en bas :
https://www.cjoint.com/?AHylapZN4PG
https://www.cjoint.com/?AHylapZN4PG
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 11:01
24 août 2011 à 11:01
Ca m intrigue... Y a moyen que tu m envoie le fichier excel par mail ou c est un fichier confidentiel ?
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 11:03
24 août 2011 à 11:03
tu dois l'avoir vu je t'ai mis le lien juste avant :)
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 11:10
24 août 2011 à 11:10
Je remonte de ma pause clope et je vois ca
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 11:16
24 août 2011 à 11:16
https://www.cjoint.com/?AHylnhZnoe2
une version un peu plus explicite :
donc comme tu le verras dès que je coche une case (celle du milieu) un résultat s'affiche sur la droite de la coche ainsi que dans mes fameuses R S et T .
ne prend pas en compte les colonnes de gauche, c'est un rappel car chaque défaut a son importance d'où l'intérêt de les trier dans le bilan :
tu verra donc que la colonne R correspond à éléments à vérifier
S : éléments relevant de la sécurité de l'appareil à remettre en état
et T : le dernier
une version un peu plus explicite :
donc comme tu le verras dès que je coche une case (celle du milieu) un résultat s'affiche sur la droite de la coche ainsi que dans mes fameuses R S et T .
ne prend pas en compte les colonnes de gauche, c'est un rappel car chaque défaut a son importance d'où l'intérêt de les trier dans le bilan :
tu verra donc que la colonne R correspond à éléments à vérifier
S : éléments relevant de la sécurité de l'appareil à remettre en état
et T : le dernier
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 11:25
24 août 2011 à 11:25
https://www.cjoint.com/?3Hylxn2YC57
Voici le fichier qui marche...
Tu m avais pas dit que t avais mis un "Option Explicit"...
Parce que du coup, si tu definis pas les variables, y avait aucun risque que ca marche...
j ai donc rajoute des Dim...
J ai pas tres bien compris comment t as construit ton fichier avec des cellules qui font des appels a d autres avec des if... Mais bon... Dis moi ce que tu penses du resultat...
Cordialement
Voici le fichier qui marche...
Tu m avais pas dit que t avais mis un "Option Explicit"...
Parce que du coup, si tu definis pas les variables, y avait aucun risque que ca marche...
j ai donc rajoute des Dim...
J ai pas tres bien compris comment t as construit ton fichier avec des cellules qui font des appels a d autres avec des if... Mais bon... Dis moi ce que tu penses du resultat...
Cordialement
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 11:31
24 août 2011 à 11:31
ca te dérange de reprendre le dernier fichier que je t envoyé ?
parce que la ça a l'air de marcher mais c'est pas très clair : dans ce fichier là :
https://www.cjoint.com/?3Hylxn2YC57
c'est plus explicite : la colonne R doit aller dans la fin de la colonne A
La S dans la fin de la B
et la T dans la fin de la G
parce que la ça a l'air de marcher mais c'est pas très clair : dans ce fichier là :
https://www.cjoint.com/?3Hylxn2YC57
c'est plus explicite : la colonne R doit aller dans la fin de la colonne A
La S dans la fin de la B
et la T dans la fin de la G
mikanadien2
Messages postés
108
Date d'inscription
mardi 23 août 2011
Statut
Membre
Dernière intervention
10 août 2012
10
24 août 2011 à 11:54
24 août 2011 à 11:54
Par contre fait gaffe... Tu ne veux pas reporter en colonne A B et C, mais en colonne A B et G...
Cordialement
Cordialement
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 12:16
24 août 2011 à 12:16
oui oui merci j'ai vu :)
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
24 août 2011 à 12:02
24 août 2011 à 12:02
Re,
Ce dernier code en #25 est différent de tes objectifs initiaux et du code en #14
Lors d'une nouvelle exécution :
- Il n'ajoute pas les renseignements au précédents mais il les écrase.
- Il reste un défaut : il n'efface pas les renseignement précédents, il risque donc d'en rester si il y en a moins que la fois précédente.
Ce dernier code en #25 est différent de tes objectifs initiaux et du code en #14
Lors d'une nouvelle exécution :
- Il n'ajoute pas les renseignements au précédents mais il les écrase.
- Il reste un défaut : il n'efface pas les renseignement précédents, il risque donc d'en rester si il y en a moins que la fois précédente.
amaury08
Messages postés
50
Date d'inscription
mercredi 17 août 2011
Statut
Membre
Dernière intervention
6 septembre 2011
24 août 2011 à 12:17
24 août 2011 à 12:17
oui j'ai remarqué je vais juste faire une petite msgbox pour l'utilisateur en disant qu'à chaque nouveau document il devra effacer le bilan
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
24 août 2011 à 12:31
24 août 2011 à 12:31
Tu peux simplement ajouter après :
LinetoreportT = 266
Ajouter :
Cells(LinetoreportR, "A").Resize(208).ClearContents
Cells(LinetoreportS, "B").Resize(208).ClearContents
Cells(LinetoreportT, "C").Resize(208).ClearContents
LinetoreportT = 266
Ajouter :
Cells(LinetoreportR, "A").Resize(208).ClearContents
Cells(LinetoreportS, "B").Resize(208).ClearContents
Cells(LinetoreportT, "C").Resize(208).ClearContents